Python的:制作列表,它是两个列表,项目明智[复制]的总和(Python: Produce li

2019-07-30 08:29发布

这个问题已经在这里有一个答案:

  • 逐元素添加2所列出? 15个回答

说我有两个列表:

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

我想创建一个第三个,这将是两个给定的线性和:

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

是否有可能“为”构造做? 喜欢:

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

(这显然返回不是我想要的)

Answer 1:

使用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 ,然后再通过的所有值环b ,同时将它们添加到2 ,这就是为什么你并没有获得预期的输出。



Answer 2:

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]


Answer 3:

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


Answer 4:

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


Answer 5:

我不知道你想做什么,但你可以很容易地做你问什么用numpy的。 我只是不知道你真的想要额外的依赖添加到您的代码。



文章来源: Python: Produce list which is a sum of two lists, item-wise [duplicate]