在python中元素明智地添加两个不相等的列表

时间:2015-07-01 20:43:16

标签: python

如果a=[1,2,3,4]b=[1,2,3],我想设置a = a+b,只要b延伸,就会发生添加。在b结束之后,元素不受影响。在这种情况下,结果应为a=[2,4,6,4]

2 个答案:

答案 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]