如果a=[1,2,3,4]
和b=[1,2,3]
,我想设置a = a+b
,只要b延伸,就会发生添加。在b结束之后,元素不受影响。在这种情况下,结果应为a=[2,4,6,4]
。
答案 0 :(得分:4)
您可以使用itertools.izip_longest
来完成此操作。 itertools
包对处理可迭代数据类型的任何内容都非常有用。如果您有其他要执行此操作的列表,则可以将其扩展为任意数量的可迭代项。
import itertools
map(sum,itertools.izip_longest(a,b,fillvalue = 0))
给出了:
[2, 4, 6, 4]
答案 1 :(得分:2)
使用itertools.izip_longest使用fillvalue
0的列表进行压缩,以保留两个列表中较长的元素:
from itertools import izip_longest # zip_longest python 3
print([i+j for i,j in izip_longest(a,b,fillvalue=0)])
如果您正在进行数值运算,您可能会发现numpy有用:
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([1, 2, 3])
b.resize(a.shape)
print(a+b)
[2 4 6 4]