python:逐点列表总和

时间:2011-04-26 09:34:15

标签: python list

Input: two lists (list1, list2) of equal length
Output: one list (result) of the same length, such that:
    result[i] = list1[i] + list2[i]

有没有简洁的方法呢?或者这是最好的:

# Python 3
assert len(list1) == len(list2)
result = [list1[i] + list2[i] for i in range(len(list1))]

5 个答案:

答案 0 :(得分:13)

您可以使用内置zip功能,也可以使用它来添加运算符上的两个列表。像这样:

from operator import add
map(add, list1,list2)

答案 1 :(得分:8)

IMO最好的方式是

result = [x + y for x, y in zip(list1, list2)]

使用Python3基本版zip甚至没有构建中间列表(除非list1list2列表很大,否则不是问题。)

但请注意,zip将停留在输入列表中最短的位置,因此仍需要assert

答案 2 :(得分:5)

[a + b for a, b in zip(list1, list2)]

答案 3 :(得分:1)

有几种方法,例如使用mapsumizip(但afaik,zip与Python 3中的izip的工作方式相同):

>>> from itertools import izip
>>> map(sum, izip(list1, list2))

答案 4 :(得分:0)

我会这样做:

result = [x+x for x,y in zip(list1, list2)]