在不使用for循环的情况下在python中对两个列表进行求和

时间:2013-12-30 05:14:43

标签: python list function sum

我试图添加两个列表而不使用for循环(内置函数?,生成器?)

例如,让我们使用以下列表:

a = [1,2,3]
b = [10,15,19]

我想要以下结果:

c = [11,12,13,16,17,18,20,21,22]

我怎样才能做到这一点? 请记住,使用循环结构将提供我正在寻找的结果,但由于我正在处理相当大的列表,我想要一种更聪明的方法来做到这一点。

3 个答案:

答案 0 :(得分:3)

这有效:

import itertools
a = [1,2,3]
b = [10,15,19]
[x+y for x,y in itertools.product(b,a)]
#>> [11, 12, 13, 16, 17, 18, 20, 21, 22]

答案 1 :(得分:1)

这使用for循环,但它是紧凑的:

[i + j for i in b for j in a ]

答案 2 :(得分:0)

如果numpy可用:

import numpy as np
print (np.array(a)+np.array(b)[:,None]).flatten().tolist()
# [11, 12, 13, 16, 17, 18, 20, 21, 22]

这仍然使用迭代,但它隐藏在numpy C代码中。

计算外部总和,然后展平它并将其转回列表

array([[11, 12, 13],
       [16, 17, 18],
       [20, 21, 22]])