如果我有一个列表列表,并且每个嵌套列表都包含数字,我如何将所有这些列表按元素添加到单个数组中?
即
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]
答案 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]