说我有两个清单:
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]
(显然不是我想要的)
答案 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。我只是不确定你是否真的想在你的代码中添加额外的依赖。