Python:在列表中查找函数返回最小值的项?
我有一个包含坐标的点的列表,还有另一个点。
列表中的一个例子:
(45.1531912,5.7184742),(45.1531912,5.7184742),(45.1531113,5.7184544),(45.1525337,5.718298),(45.1525337,5.718298),
一个点:
(45.1533837,5.7185242)
一个函数:
def dist(point1,point2)
....
return aDistance
有没有一种方法,可以用一行代码(比如列表推导式)在这个列表中找到一个点,使得给定的函数在这个点的值是列表中最小的?
1 个回答
8
min()
函数已经有一个 key
参数了,所以不需要再用列表推导式。
假设你想找出列表中离原点最近的点:
min(list_of_points, key=lambda p: distance(p, (0, 0)))
这个方法会找到它(前提是你有一个 distance()
函数,用来计算两个点之间的距离)。
根据文档的说明:
可选的 key 参数指定了一个只需要一个参数的排序函数,类似于
list.sort()
使用的那种。如果提供了key
参数,它必须以关键字的形式给出(例如,min(a,b,c,key=func)
)。