所以假设我有一个带有子列表的列表(用于可视化演示的对齐):
[[1,2,3,4],
[1,2,3],
[0,3,4]]
Run Code Online (Sandbox Code Playgroud)
我想将它们加在一起得到:
[2,7,10,4]
Run Code Online (Sandbox Code Playgroud)
最初,对于我正在处理的事情,我知道这些列表的上限,我正在考虑遍历每个子列表并添加0填充并使每个列表与上限一样长:
result+=[0]*(len(upper_bound)-len(list))
Run Code Online (Sandbox Code Playgroud)
然后使用:
result = [sum(x) for x in zip(list1,list2)
Run Code Online (Sandbox Code Playgroud)
得到这笔钱.但是上限变得非常大(比如10000+),列表的数量也很多(比如1000多个列表).
我的问题是:是否有一种更有效的方法来添加N个可能不均匀大小的子列表来给出结果列表,或者我是否要求太多?(我也不能使用任何花哨的数字库,如numpy)
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]
Run Code Online (Sandbox Code Playgroud)