我希望使用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
吗?
答案 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建议的内容。