从元组列表中获取最接近给定值的元组

时间:2015-02-05 08:19:57

标签: python list tuples coordinates

给定一个包含坐标的元组列表,我想找到哪个坐标最接近我在输入中给出的坐标:

cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
takenearest(myList, myNumber)
...
(11.6702634, 72.313323)

请告诉我......

3 个答案:

答案 0 :(得分:5)

为您的数据

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)返回点ab之间的距离作为浮点数,您必须自己定义。

现在你必须决定如何计算距离:使用简单a² + b² = c²,某些地理公式或专用图书馆。

答案 1 :(得分:2)

如果我理解你,你需要列表中距离给定坐标最小的坐标。这意味着您可以像这样循环遍历列表:

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))

我希望这有帮助!

答案 2 :(得分:2)

>>> min(cooList, key=lambda c: (c[0]- coordinate[0])**2 + (c[1]-coordinate[1])**2)
(11.6702634, 72.313323)
相关问题