如何获得元组和元组列表之间的最近距离?
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))
我想在列表中找到最接近我给定元组的元组。
我有一个坐标列表和一个点,我需要在列表中找到最接近我的点的项目。
像这样:
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))