Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何获取具有最小/最大属性的列表元素?_Python_List - Fatal编程技术网

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

在Python中,如何获取具有最小/最大属性的列表元素?,python,list,Python,List,我有以下Python数组: points_list = [point0, point1, point2] 其中,列表中的每个点属于以下类型: class point: __init__(self, coord, value): self.coord = numpy.array(coord) self.value = value # etc... 和一个函数: def distance(x,y): return numpy.linalg.norm

我有以下Python数组:

points_list = [point0, point1, point2]
其中,列表中的每个
点属于以下类型:

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 = point([1, 2, 3], 5)
>>> def distance(x):
    return numpy.linalg.norm(x.coord - point_a.coord)
我在别处定义了一个点。现在我想在
点列表
中找到最接近
点a
的点

除了循环之外,在Python中执行此操作的最佳方法是什么?

您尝试过吗

min(points_list, key=lambda x: distance(x, point_a))
回答评论中的问题
lambda
在这里确实是必要的,因为

但是,由于您的
点a
基本上是全局的,因此您可以将其“硬编码”到
距离功能中:

def distance(x,y):
    return numpy.linalg.norm(x.coord - y.coord)
>>> 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)

另一个我不知道的Python函数:)+1。我想只有同时计算最小值和最大值时,循环才有好处。@Andre:我认为更好的选择是对相同的
参数使用
sort
,并获取第一个和最后一个元素。@SilentGhost:Ok。。也许你想要min,max和average:-)你仍然在循环,你只需要min()为你做。我不知道
min()
接受
参数。谢谢