我在Python中有以下数组:
points_list = [point0, point1, point2]
其中每个points_list
的类型为:
class point:
__init__(self, coord, value):
self.coord = numpy.array(coord)
self.value = value
# etc...
一个功能:
def distance(x,y):
return numpy.linalg.norm(x.coord - y.coord)
我在其他地方定义了point_a
点。现在我想在points_list
中找到最接近point_a
的点。
除了循环之外,在Python中执行此操作的最佳方法是什么?
答案 0 :(得分:13)
你试过这个吗?
min(points_list, key=lambda x: distance(x, point_a))
回答评论中的问题:lambda
确实需要point_a
。
但是,因为您的distance
基本上是全局的,您可以将其“硬编码”到>>> point_a = point([1, 2, 3], 5)
>>> def distance(x):
return numpy.linalg.norm(x.coord - point_a.coord)
函数中:
distance
通过这种方式,您可以将lambda
作为完全跳过>>> min(points_list, key=distance)
的关键参数传递。
{{1}}