同时迭代多个列表

时间:2019-10-10 16:59:41

标签: python python-3.x

我只想使用zipmap同时遍历3个列表:

l0 = [0,0,0,0,0,0]
l1 = [1,2,3,4,5,6]
l2 = [2,3,4,5,6,7]

result = map(lambda x, y, z: x+y+z, zip(l0, l1, l2))

print(tuple(result))

但返回错误:

Traceback (most recent call last):
  File "pythontest.py", line 9, in <module>
    print(tuple(result))
TypeError: <lambda>() missing 2 required positional arguments: 'y' and 'z'

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

问题是您使用了错误的变量... zip返回的单个元素包含各个值。 因此,您需要使用索引来访问它。

l0 = [0,0,0,0,0,0]
l1 = [1,2,3,4,5,6]
l2 = [2,3,4,5,6,7]
map(lambda x: x[0]+x[1]+x[2], zip(l0, l1, l2))
Out[23]: <map at 0x7fa48232f710>
result = map(lambda x: x[0]+x[1]+x[2], zip(l0, l1, l2))

print(tuple(result))
(3, 5, 7, 9, 11, 13)

答案 1 :(得分:2)

您只能在lambda函数中使用一个参数,因为zip创建3个元素的元组,然后应用sum函数:

result = map(lambda elem: sum(elem), zip(l0, l1, l2))
相关问题