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))]
答案 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
甚至没有构建中间列表(除非list1
和list2
列表很大,否则不是问题。)
但请注意,zip
将停留在输入列表中最短的位置,因此仍需要assert
。
答案 2 :(得分:5)
[a + b for a, b in zip(list1, list2)]
答案 3 :(得分:1)
有几种方法,例如使用map
,sum
和izip
(但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)]