从元组列表中,获取最接近给定值的元组
from list of tuples, get tuple closest to a given value
给定一个包含坐标的元组列表,我想找出哪个坐标最接近我在输入中给出的坐标:
cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
takenearest(myList, myNumber)
...
(11.6702634, 72.313323)
请告诉我...
如果我没理解错的话,您需要列表中与给定坐标的距离最短的坐标。这意味着您可以像这样循环遍历列表:
def closest_coord(list, coord):
closest = list[0]
for c in list:
if distance(c, coord) < distance(closest, coord):
closest = c
return closest
要计算两个变量之间的距离,只需使用毕达哥拉斯。
def distance(co1, co2):
return sqrt(pow(abs(co1[0] - co2[0]), 2) + pow(abs(co1[1] - co2[2]), 2))
希望对您有所帮助!
>>> min(cooList, key=lambda c: (c[0]- coordinate[0])**2 + (c[1]-coordinate[1])**2)
(11.6702634, 72.313323)
为了您的数据
cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
最短的 Pythonic 答案是:
nearest = min(cooList, key=lambda x: distance(x, coordinate))
使用函数 distance(a, b)
返回点 a
和 b
之间的距离作为浮点数,您必须自己定义它。
现在您必须决定如何计算距离:使用简单的 a² + b² = c²
、一些地理公式或专用库。
给定一个包含坐标的元组列表,我想找出哪个坐标最接近我在输入中给出的坐标:
cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
takenearest(myList, myNumber)
...
(11.6702634, 72.313323)
请告诉我...
如果我没理解错的话,您需要列表中与给定坐标的距离最短的坐标。这意味着您可以像这样循环遍历列表:
def closest_coord(list, coord):
closest = list[0]
for c in list:
if distance(c, coord) < distance(closest, coord):
closest = c
return closest
要计算两个变量之间的距离,只需使用毕达哥拉斯。
def distance(co1, co2):
return sqrt(pow(abs(co1[0] - co2[0]), 2) + pow(abs(co1[1] - co2[2]), 2))
希望对您有所帮助!
>>> min(cooList, key=lambda c: (c[0]- coordinate[0])**2 + (c[1]-coordinate[1])**2)
(11.6702634, 72.313323)
为了您的数据
cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
最短的 Pythonic 答案是:
nearest = min(cooList, key=lambda x: distance(x, coordinate))
使用函数 distance(a, b)
返回点 a
和 b
之间的距离作为浮点数,您必须自己定义它。
现在您必须决定如何计算距离:使用简单的 a² + b² = c²
、一些地理公式或专用库。