列表推导式同时迭代两个变量

8

使用列表推导式遍历两个变量,同时将它们的循环位置同时增加,这种情况是否可能?请见下面的示例:

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

b = [6,7,8,9,10]

c = [i+j for i in a for j in b] # This works but the output is not what it would be expected.

期望输出为c = [7, 9, 11, 13, 15](来自a的第n个元素加上来自b的第n个元素)

谢谢。


11
试试这个:c = [i+j for i,j in zip(a,b)],它的意思是将列表a和列表b对应位置的元素相加并存储在一个新的列表c中。 - Alex
1个回答

12
a = [1,2,3,4,5]
b = [6,7,8,9,10]

c = map(sum, zip(a, b))
print c

#Output
[7, 9, 11, 13, 15]

1
虽然这是完全有效的,但对于新手来说使用sum函数是不必要的复杂。另一个问题是,在Python 3中,它返回一个映射对象 - 例如 <map object at 0x0000019B59329DA0>虽然map更快,但以下方法更简单...c = [aa + bb for aa, bb in zip(a,b)] - Diomedea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接