Python:在列表中查找函数返回最小值的项?

2 投票
1 回答
576 浏览
提问于 2025-04-18 00:33

我有一个包含坐标的点的列表,还有另一个点。

列表中的一个例子:

(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))。

撰写回答