如何使用map和lambda函数重写此代码?

时间:2017-03-09 02:52:19

标签: python lambda list-comprehension

我试图将此列表理解代码转换为map和lambda代码。

>>>list1 = [1,2,3]
>>>list2 = [10,20,30]
>>>print([m+n for m,n in zip(list1, list2)])
[11, 22, 33]

以下代码是我尝试过的,但它显示了TypeError

>>>print(list(map(lambda m,n:m+n, zip(list1, list2))))
Traceback (most recent call last):
  File "<console>", line 1, in <module>   
TypeError: <lambda>() missing 1 required positional argument: 'n'

我读到列表理解和labda函数是可互换的。请指出我的错误!

1 个答案:

答案 0 :(得分:2)

lambda只获得一个参数,它是zip的一个元组,你需要解压缩自己:

>>> list1 = [1,2,3]
>>> list2 = [10,20,30]
>>> list(map(lambda x: x[0]+x[1], zip(list1, list2)))
[11, 22, 33]