如何获得元组和元组列表之间的最近距离?

How can i get the closest distance between a tuple and a list of tuples?

我想在列表中找到最接近我给定元组的元组。

我有一个坐标列表和一个点​​,我需要在列表中找到最接近我的点的项目。

像这样:


cords =  [(455, 12), (188, 90), (74, 366), (10,10)]
point = (18, 448)

for c in cords:
    dst = distance.euclidean(cords[c], point)

Output = closest distance

我尝试使用 scipy.spatial.distance.euclidean 但这给出了错误:

TypeError: list indices must be integers or slices, not tuple

尝试for c in range(len(cords))。就像你一样,你正在将列表的元素放入 c,而不是索引。

您将对象 c 作为索引传递给它。如果你想使用索引,你可以使用 enumerate 来做到这一点,或者只是用 pythonic 方式来做到这一点:

cords =  [(455, 12), (188, 90), (74, 366), (10,10)]
point = (18, 448)

for c in cords:
    dst = distance.euclidean(c, point)

您应该保存距离并找到最小值。

c是坐标列表中的元组,不是索引,所以用它代替cords[c],也可以用min加上生成器表达式得到你想要什么:

from scipy.spatial.distance import euclidean

cords =  [(455, 12), (188, 90), (74, 366), (10, 10)]
point = (18, 448)

closest_dst = min(euclidean(c, point) for c in cords)
print(closest_dst)

输出:

99.29753269845128

Python min 允许指定一个单参数函数,该函数 return 是一个值(“key”)并且它将 return最小化它的元素。

min(cords, key=lambda c : distance.euclidean(c, point))