我有一个元组坐标:
[(1, 2), (3, 2), (1, 4)]
我也有一个坐标: (8, 7)
现在,我需要根据元组和单点之间的每个点之间的距离对元组进行排序。
如何使用sorted()
?
本质上,您可以在列表中的点pt
和每个元素之间计算欧几里得距离。函数numpy.hypot
可以做到这一点,尽管如果您愿意实施自己是微不足道的。
>>> from numpy import hypot
>>> l = [(1, 2), (3, 2), (1, 4)]
>>> pt = [8,7]
>>> sorted(l, key = lambda i: hypot(i[0]-pt[0], i[1]-pt[1]))
[(3, 2), (1, 4), (1, 2)]
如果您不想使用numpy并想用纯python完成它,
>>> array = [(1, 2), (3, 2), (1, 4)]
>>> point = [8, 7]
>>> array.sort(key = lambda k: (k[0] - point[0])**2 + (k[1] - point[1])**2)
>>> array
[(3, 2), (1, 4), (1, 2)]