我只想使用zip
和map
同时遍历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'
有人可以帮忙吗?
答案 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))