这对zip 来说是一个非常有用的例子。
>>> list1 = [1,2,3,4,5]
>>> list2 = [1,1,1,4,1]
>>> list3 = [1,22,3,1,5]
>>> list4 = [1,2,5,4,5]
>>> [sum(x) for x in zip(list1, list2, list3, list4)]
[4, 27, 12, 13, 16]
或者,如果将数据作为清单而不是单独清单列出:
>>> data = [[1,2,3,4,5], [1,1,1,4,1], [1,22,3,1,5], [1,2,5,4,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27, 12, 13, 16]
同样,如果将数据存储为列表的dict
> >,您可以使用 _itervalues" rel="nofollown"_code>dict.values () 来检索列表值,并以类似的方式使用 :
>>> data = {"a":[1,2,3], "b":[3,4,4]}
>>> [sum(x) for x in zip(*data.itervalues())]
[4, 6, 7]
请注意,如果列表的长度不均, zip
将一直工作到最短的列表长度。 例如 :
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27]
如果您想要获得包含所有数据的结果, 您可以使用 < a href=" http://docs. python.org/library/itertools.html#itertools.izip_longest" rel="nofollow"\code>etertools.izip_longest (配有适当的 fille
)。 例如 :
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in izip_longest(*data, fillvalue=0)]
[4, 27, 8, 4, 5]