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。感谢您的帮助。如果列表部分按递增顺序排序(零除外),则可以通过记忆最后一个非零元素(无需设置)