Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 跳过列表中的元素_Python_Python 2.7 - Fatal编程技术网

Python 跳过列表中的元素

Python 跳过列表中的元素,python,python-2.7,Python,Python 2.7,你能帮我解决这个问题吗?我有一个这样的数组 a = [1,2,3,0,0,0,3,4,5] 我希望输出是 a = [1,2,3,0,0,0,4,5,6] 或者a=[1,2,3,0,3,4,5]->a=[1,2,3,0,4,5,6] 所以,我知道如何检测重复和增加列表中的数字。但我的问题是,如何在列表的迭代中检测到0并“跳过”它?非常感谢您的帮助(Python2.7非常理想,因为我们使用的是2.7) 到目前为止,我的方式是 i = 1 while i < len(a): if

你能帮我解决这个问题吗?我有一个这样的数组

a = [1,2,3,0,0,0,3,4,5]
我希望输出是

a = [1,2,3,0,0,0,4,5,6]
或者
a=[1,2,3,0,3,4,5]->a=[1,2,3,0,4,5,6]

所以,我知道如何检测重复和增加列表中的数字。但我的问题是,如何在列表的迭代中检测到0并“跳过”它?非常感谢您的帮助(Python2.7非常理想,因为我们使用的是2.7)

到目前为止,我的方式是

i = 1
while i < len(a): 
    if a[i-1] == a[i]:
        a[i] = a[i]+1
 i = i+1
i=1
而我
显然,只有当
a=[1,2,3,3,4,5]

谢谢你抽出时间

  • 定义一个辅助集以测试元素是否已被使用
  • 特殊情况:如果为0,则通过
  • 扫描原始列表,并增加1,直到不在辅助设置中
  • 将新值添加到集合中
  • 附加到输出列表
(这里没有列表理解,因为有副作用)

我的建议:

a = [1,2,3,0,0,0,3,4,5]
b = []
s = set()

for i in a:
    if i:
        while i in s:
            i+=1
        s.add(i)
    b.append(i)
注意:根据数据,
设置
可能会过量。如果只增加数据部分(零除外),则1个内存插槽就足够了:

a = [1,2,3,0,0,0,3,4,5]
b = []

highest = 0
for i in a:
    if i!=0:
        if i <= highest:
            i=highest+1
        highest = i
    b.append(i)
a=[1,2,3,0,0,0,3,4,5]
b=[]
最高=0
对于我来说,在一个:
如果我=0:
如果我
  • 定义一个辅助集以测试元素是否已被使用
  • 特殊情况:如果为0,则通过
  • 扫描原始列表,并增加1,直到不在辅助设置中
  • 将新值添加到集合中
  • 附加到输出列表
(这里没有列表理解,因为有副作用)

我的建议:

a = [1,2,3,0,0,0,3,4,5]
b = []
s = set()

for i in a:
    if i:
        while i in s:
            i+=1
        s.add(i)
    b.append(i)
注意:根据数据,
设置
可能会过量。如果只增加数据部分(零除外),则1个内存插槽就足够了:

a = [1,2,3,0,0,0,3,4,5]
b = []

highest = 0
for i in a:
    if i!=0:
        if i <= highest:
            i=highest+1
        highest = i
    b.append(i)
a=[1,2,3,0,0,0,3,4,5]
b=[]
最高=0
对于我来说,在一个:
如果我=0:

如果我尝试了什么?你没有提供足够的关于算法的信息,你是基于
0
增加的,例如
[1,2,0,3,4]
变成
[1,2,0,4,5]
还是因为重复
3
(忽略
0
),例如
[1,2,3,4]
变成
[1,2,3,4,5]
。你没有表现出任何企图。不,够了。因为,我只有案例[1,2,3,0,4,5]或[1,2,3,0,0,4,5]。而且,在我的环境中它将“永远”是这样的。你尝试了什么?你没有提供足够的算法信息,你是基于
0
增加的,例如
[1,2,0,3,4]
变成
[1,2,0,4,5]
还是因为重复的
3
(忽略
0
s),例如
[1,2,3,3,4]
变成了
[1,2,3,4,5]
。你还没有表现出任何尝试。不,这就足够了。因为我只有[1,2,3,0,4,5]或[1,2,3,0,0,4,5]两种情况。而且,在我的环境中“总是”这样。它是有效的。我在列表中使用迭代并比较a[I-1]和a[I],然后设置a[I]=a[I]+1.这种方法只检测重复但不跳过0。感谢您的帮助。如果列表部分按递增顺序排序,除了0之外,您可以通过记忆最后一个非零元素(无需设置
)使其更简单。我在列表中使用迭代并比较a[I-1]和a[I],然后设置a[I]=a[I]+1.这样只检测重复项,而不跳过0。感谢您的帮助。如果列表部分按递增顺序排序(零除外),则可以通过记忆最后一个非零元素(无需设置