繁体   English   中英

不使用for循环在python中将两个列表NOT明智地求和

[英]Summing two lists NOT element wise in python without using for loop

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

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

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

我想要以下结果:

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

我该怎么做? 请记住,使用循环结构会得到我想要的结果,但是由于我使用的是大型列表,因此我希望有一种更聪明的方法。

这有效:

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]

这使用了for循环,但是很紧凑:

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

如果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]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM