如何在Python中获取具有最小/最大属性的列表元素?

时间:2009-09-22 14:43:06

标签: python list

我在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中执行此操作的最佳方法是什么?

1 个答案:

答案 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}}