Skip to main content
 首页 » 编程设计

Python:你能逐个添加两个列表吗

2025年05月04日12unruledboy

您可以逐个元素添加两个列表,而无需像下面那样对其进行迭代吗?这行得通,但是嗯。我想念 matlab。

list1 = [3, 7, 3] 
list2 = [4, 5, 6] 
 
for x in range(0, len(list1)):  
   list1[x] = list1[x] + list2[x] 
 
print (list1) 
 
Output : 
[7, 12, 9] 

请您参考如下方法:

千万不要错过 Matlab :) numpy 数组是典型的 Matlab 数组:

arr1 = np.array([3, 7, 3]) 
arr2 = np.array([4, 5, 6]) 
arr1 + arr2 

给你你想要的。

如果你想坚持使用列表,你可以这样做:

list1 = [3, 7, 3] 
list2 = [4, 5, 6] 
[sum(x) for x in zip(list1, list2)] 

在性能评论,尤其是Patrick的比较之后,我自己做了一个比较,验证了numpy实际上是目前发布的解决方案中最快的。但是,还有另一种解决方案可以击败 numpy!让我们看看:

# Numpy: 
timeit arr1 + arr2 # 1.67 µs per loop 
# List comprehension: 
timeit [sum(x) for x in zip(list1, list2)] # 2.59 µs per loop 
timeit [(x+y) for x,y in zip(list1,list2)] # 1.72 µs per loop 
# Map and Reduce-based (note that reduce is really overkill, I did it just for fun): 
timeit map(sum, zip(list1, list2)) # 2.58 µs per loop 
timeit map(lambda a, b: a + b , list1, list2) # 2.11 µs per loop 
timeit [reduce((lambda x,y: x+y), e) for e in zip(list1,list2)] # 4.05 µs per loop 
# And the winner: 
from operator import add 
timeit map(add, list1, list2) # 1.57 µs per loop