我正在尝试在列表列表上使用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'
答案 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))
我将这些计算值发送到另一个函数,因此我认为将其存储在列表中是唯一的选择。