我想添加list1=[1,2,3,4,5]
和list2=[1,1,1,1,1,1,1]
我想要的是什么
list3=[2,3,4,5,6,1,1]
这是我的错误代码
lis1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
if len(list1)>len(list2):
for i in range(len(list1)):
list2.append(0) if list2[i]=[]
list3[i]=list1[i]+list2[i]
else:
for i in range(len(list2)):
list1.append(o) if list1[i]=[]
list3[i]=list1[i]+list2[i]
print(list3)
答案 0 :(得分:9)
您可以使用 itertools
中的izip_longest
<强>实施例强>
from itertools import izip_longest
list1=[1,2,3,4,5]
list2=[1,1,1,1,1,1,1]
print([sum(i) for i in izip_longest(list1, list2, fillvalue=0)])
<强>输出:强>
[2, 3, 4, 5, 6, 1, 1]
答案 1 :(得分:0)
基本上你想要将两个列表一起添加,如果列表不够长,则填充0。所以我直接从您的代码修改而没有任何库:
list1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
list3 = [] # make a list3
if len(list1)>len(list2):
for i in range(len(list1)):
# if list2[i]=[] this line is wrong, you can't compare non-exist element to a empty array
if i >= len(list2):
list2.append(0)
list3.append(list1[i]+list2[i])
else:
for i in range(len(list2)):
if i >= len(list1):
list1.append(0)
list3.append(list1[i]+list2[i])
print(list3)
答案 2 :(得分:0)
我会尽量使这段代码尽可能基本。首先,您从不想要复制粘贴您的代码。应首先评估您的if / else语句。
lis1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
longer, shorter = [], []
if len(list1) > len(list2):
longer, shorter = list1, list2
else:
longer, shorter = list2, list1
现在我们已经确定哪个列表更长,哪个更短,只需命名我们的列表longer
和shorter
。我们的下一个任务是编程算法。我们想要做的是迭代longer
列表并添加我们找到的每个int:
for i in range(len(longer)):
longer[i] += shorter[i]
print(longer)
我们尝试运行该程序并繁荣,它以out of range exception
失败。所以我们确定问题,并修复我们的代码:
for i in range(len(longer)):
if (i > len(shorter)): ## We make sure to not call shorter[i] if there is no such element
longer[i] += shorter[i]
print(longer)
有问题吗?