有条件替换与列表2元素列表1元素
我试图合并两个列表,但是我正在一个out-of-range
错误:有条件替换与列表2元素列表1元素
例子:
List1 = [1,2,0,7,0]
List2 = [3,6]
For i in range(len(List1)):
if List1[i] == 0:
List1[i] = List2[i]
print(List1)
有什么不对的代码?
要更换的List1
是零,随着List2
元素的每一个元素,
代码:
List1 = [1, 2, 0, 7, 0]
List2 = [3, 6]
l2 = iter(List2)
List1 = [l if l != 0 else next(l2) for l in List1]
print(List1)
产地:从意见
[1, 2, 3, 7, 6]
更新:
如果List2
可能是不够长,围绕这一方法是为next()
指定一个默认值:
List1 = [1, 2, 0, 7, 0, 0]
List2 = [3, 6]
l2 = iter(List2)
List1 = [l if l != 0 else next(l2, None) for l in List1]
print(List1)
主要生产:
[1, 2, 3, 7, 6, None]
如果'List1'比'len(List2)'更多'0',你会得到一个'StopIteration'异常,可能需要'next(l0,2)'或'next(l2,None)'来处理。 –
它的工作谢谢,我只是添加下一个(l2,无)斯蒂芬劳赫先生给出的代码 – lecteur
您似乎想要将0
的每个实例从List1
替换为与索引匹配的值List2
。但问题是,对于List1
,0
是在指数2(索引从0开始),但就是没有项目在索引2 List2
,因此原因,你得到一个IndexError
# Example
>>> lst = [1, 2, 3]
>>> lst[2]
3
>>> lst[3]
# IndexError: list index out of range
这也解释了什么是错的,现在你想要做什么,或许我们可以提供帮助。
您告诉我们。它应该做什么?它做什么呢?现在有一个语法错误。确保你剪切并粘贴给出错误的确切代码。 –