如何将多个参数传递给python映射函数?

时间:2018-11-29 18:58:11

标签: python-3.x lambda

我正在尝试在列表列表上使用map函数。如何将每个距离传递给地图功能。如果您看到下面的代码,它将计算距离并以列表形式返回输出。

import math
locations = [[1, 2], [2, 3]]
distance = lambda x,y : math.sqrt(x**2 + y**2)
output = list(map(distance, locations))

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'y'

3 个答案:

答案 0 :(得分:1)

尝试:

import math
locations = [[1, 2], [2, 3]]
distance = lambda x,y : math.sqrt(x**2 + y**2)
output = list(map(distance, *locations))

答案 1 :(得分:1)

您可以使用math.hypot函数来代替编写自己的函数:

import math
import itertools
locations = (1, 2), (2, 3), (3, 4)
print(*itertools.starmap(math.hypot, locations), sep='\n')

如果您要查找除两个位置以外的其他内容,请使用itertools.starmap

答案 2 :(得分:0)

根据所有答案,我的解决方案如下

import math
import itertools
locations = [[1, 2], [2, 3], [3, 4]]
output = list(itertools.starmap(lambda x,y: math.sqrt(x**2  + y**2), locations))

我将这些计算值发送到另一个函数,因此我认为将其存储在列表中是唯一的选择。