如何将两个参数传递给map中的lambda函数

时间:2015-03-20 09:14:06

标签: python-2.7 dictionary

我希望使用map来执行以下操作:

res = []
arr1 = [1, 2, 3]
arr2 = [5, 0, 10]
for n, m in zip(arr1, arr2):
    res.append(n - 0.5 * m)

这相当于列表comp:

res = [n - 0.5 * m for n, m in zip(arr1 ,arr2)] 

但它无法使用map

res = map(lambda x, y: x - 0.5 * y, zip(arr1, arr2)) 

TypeError: <lambda>() takes exactly 2 arguments (1 given)

使用map吗?

有一种巧妙的方法吗?

2 个答案:

答案 0 :(得分:2)

您将arr1和arr2压缩为单个参数

>>> res = []
>>> arr1 = [1, 2, 3]
>>> arr2 = [5, 0, 10]
>>> res = map(lambda x, y: x - 0.5 * y, arr1, arr2)
>>> res
[-1.5, 2.0, -2.0]

答案 1 :(得分:1)

>>> map(lambda (x, y): x - 0.5 * y, zip(arr1, arr2)) 
[-1.5, 2.0, -2.0]

就像你可以在lambda中使用元组来修复它,但我更喜欢DTing建议的内容。