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

Mat*_*ler 2 python list-comprehension

我有一个带坐标和另一个点的点列表.

列表中的示例:

(45.1531912,5.7184742),(45.1531912,5.7184742),(45.1531113,5.7184544),(45.1525337,5.718298),(45.1525337,5.718298),
Run Code Online (Sandbox Code Playgroud)

一个点 :

(45.1533837,5.7185242)
Run Code Online (Sandbox Code Playgroud)

功能:

def dist(point1,point2)
   ....
   return aDistance
Run Code Online (Sandbox Code Playgroud)

是否有一个python one liner(list-comprehension?)在列表中找到一个给定函数返回列表最小值的点?

Mar*_*ers 8

min()函数key已经接受了一个参数,不需要列表理解.

假设您想要找到列表中距离原点最近的点:

min(list_of_points, key=lambda p: distance(p, (0, 0)))
Run Code Online (Sandbox Code Playgroud)

会找到它(给定一个distance()计算两点之间距离的函数).

从文档:

可选的key参数指定一个单参数排序函数,就像用于list.sort().键参数(如果提供)必须采用关键字形式(例如min(a,b,c,key=func)).