4

所以可以说我有一个带有子列表的列表(视觉演示对齐):

[[1,2,3,4],
[1,2,3],
[0,3,4]]

我想将它们加在一起以获得:

[2,7,10,4]

最初,对于我正在处理的事情,我知道这些列表的上限,我正在考虑遍历每个子列表并添加 0 填充并使每个列表与上限一样长:

result+=[0]*(len(upper_bound)-len(list))

然后使用:

result = [sum(x) for x in zip(list1,list2)

得到总和。但是上限变得非常大(比如 10000+),并且列表的数量也很多(比如 1000+ 列表)。

我的问题是:是否有更有效的方法来添加 N 个可能不均匀大小的子列表以给出结果列表,还是我要求太多?(我也不能使用任何花哨的数字库,如 numpy)

4

1 回答 1

7

itertools.izip_longest可以做你需要的:

import itertools
lists = [[1,2,3,4],
         [1,2,3],
         [0,3,4]]
print [sum(x) for x in itertools.izip_longest(*lists, fillvalue=0)]
# prints [2, 7, 10, 4]
于 2012-11-10T05:14:45.217 回答