我试图添加两个列表而不使用for循环(内置函数?,生成器?)
例如,让我们使用以下列表:
a = [1,2,3]
b = [10,15,19]
我想要以下结果:
c = [11,12,13,16,17,18,20,21,22]
我怎样才能做到这一点? 请记住,使用循环结构将提供我正在寻找的结果,但由于我正在处理相当大的列表,我想要一种更聪明的方法来做到这一点。
答案 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]])