7

假设我有两个列表:

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]

(这显然不是我想要的)

4

5 回答 5

25

使用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

这意味着,选择1froma然后循环遍历bwhile 将它们添加到的所有元素1,然后选择2froma然后再次循环遍历bwhile 将它们添加到的所有值2,这就是您没有得到预期输出的原因。

于 2012-07-09T20:55:44.733 回答
6
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]
于 2012-07-09T21:09:05.143 回答
2
[ay + be for ay, be in zip(a, b)]
于 2012-07-09T20:56:36.837 回答
1
 sums =   [a[i]+b[i] for i in range(len(a))]
于 2012-07-09T20:56:27.433 回答
-2

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

于 2012-07-09T20:55:59.383 回答