我有一个包含X
和Y
坐标的项目列表。现在,有一个方法可以获取X
和Y
个参数,并且应该根据给定的参数返回从最接近最远的坐标列表。
基本上,它看起来像这样:
class Point:
x = 0.0
y = 0.0
# List of points
points = ...
def get_ordered_list(x, y):
# return 'points' ordered by distance to (x,y)
我是Python的新手,所以我几乎不知道如何订购商品。我该怎么做?
答案 0 :(得分:2)
您可以使用key
参数传递自定义函数进行排序,如下所示:
from math import sqrt
def get_ordered_list(points, x, y):
points.sort(key = lambda p: sqrt((p.x - x)**2 + (p.y - y)**2))
return points
答案 1 :(得分:1)
您可以在排序功能中使用键。
state
答案 2 :(得分:0)
你需要一个函数来获得两点之间的距离,我会把这个函数留给你。它将返回两点之间的距离,一点是你的主要点,另一点是列表。
在点数组的sorted
方法中使用此函数。
答案 3 :(得分:0)
请参阅列表的sort方法,尤其是键参数。它允许您放置一个返回键进行排序的函数。所以在你的例子中它可能是这样的:
def get_ordered_list(x, y):
target_point = Point(x, y)
points.sort(key=lambda p: distance(p, target_point))
假设distance(a, b)
返回点a
和b
之间的距离。另请注意sort()
对列表进行排序,即修改原始列表。如果要返回已排序的新列表,请使用sorted函数。
顺便说一句 - 您定义的类可能无法按预期工作 - x
和y
字段是类字段。要使它们成为实例字段,您必须在构造函数中定义它们:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y