这个问题已经在这里有一个答案:
- 逐元素添加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]
(这显然返回不是我想要的)
这个问题已经在这里有一个答案:
说我有两个列表:
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]
(这显然返回不是我想要的)
使用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
,这就是为什么你并没有获得预期的输出。
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]
[ay + be for ay, be in zip(a, b)]
sums = [a[i]+b[i] for i in range(len(a))]
我不知道你想做什么,但你可以很容易地做你问什么用numpy的。 我只是不知道你真的想要额外的依赖添加到您的代码。