Python:生成列表,它是两个列表的总和,以项目方式

时间:2012-07-09 20:53:53

标签: python list list-comprehension

说我有两个清单:

a=[1,2,3,4,5]
b=[5,4,3,2,1]

我想创建第三个,它将是两个线性和:

c[i]==a[i]+b[i]
c==[6,6,6,6,6]

是否可以使用'for'构造函数?喜欢:

c = [aa+bb for aa in a for bb in b]

(显然不是我想要的)

5 个答案:

答案 0 :(得分:24)

使用zip()

>>> a = [1,2,3,4,5]
>>> b = [5,4,3,2,1]
>>> c = [x+y for x,y in zip(a, b)]
>>> c
[6, 6, 6, 6, 6]

>>> c = [a[i] + b[i] for i in range(len(a))]
>>> c
[6, 6, 6, 6, 6]

c = [aa+bb for aa in a for bb in b]类似于:

 for aa in a:
     for bb in b:
           aa+bb

这意味着,从1中选择a,然后循环浏览b的所有元素,同时将其添加到1,然后从2中选择a {1}}然后再次循环浏览b的所有值,同时将它们添加到2,这就是为什么您没有得到预期的输出。

答案 1 :(得分:5)

a=[1,2,3,4,5]
b=[5,4,3,2,1]

[x+y for x,y in zip(a,b)]
[6, 6, 6, 6, 6]

OR

map(lambda x,y:x+y, a, b)
[6, 6, 6, 6, 6]

答案 2 :(得分:2)

[ay + be for ay, be in zip(a, b)]

答案 3 :(得分:1)

 sums =   [a[i]+b[i] for i in range(len(a))]

答案 4 :(得分:-1)

我不知道你要做什么,但是你可以很容易地做你曾经问过的numpy。我只是不确定你是否真的想在你的代码中添加额外的依赖。