元素的可变长度的总和列表

时间:2014-05-29 15:28:11

标签: python

如果我有一个列表列表,并且每个嵌套列表都包含数字,我如何将所有这些列表按元素添加到单个数组中?

listOne = [1, 2, 3]
listTwo = [4, 5, 6]
listThree = [7, 8, 9, 10]
allLists = [listOne, listTwo, listThree]

total = add(allLists)
print total

输出应为[12, 15, 18, 10]

2 个答案:

答案 0 :(得分:12)

使用izip_longest重新映射行/列(如zip但是最长的元素而不是最短的元素),填充较短的项目0

from itertools import izip_longest
total = [sum(x) for x in izip_longest(*allLists, fillvalue=0)]

输出:

[12, 15, 18, 10]

同样为了您的启发,zip_longest的中间输出是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9), (0, 0, 10)]

答案 1 :(得分:0)

这也是练习列表推导的好机会;)

maxlen = max(len(lst) for lst in allLists) # find length of longest list
sumlist = [sum([lst[i] if i<len(lst) else 0 for lst in allLists]) for i in range(maxlen)]

给出sumlist

[12,15,18,10]