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

Python 从元组列表中,获取最接近给定值的元组,python,list,tuples,coordinates,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) 请让我知道…如果我理解正确,您需要列表中与给定坐标距离最小的坐标。这意味着您可以像这样循环浏览列表: def cl

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

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 closest_coord(list, coord):
    closest = list[0]
    for c in list:
        if distance(c, coord) < distance(closest, coord):
            closest = c
    return closest
>>> min(cooList, key=lambda c: (c[0]- coordinate[0])**2 + (c[1]-coordinate[1])**2)
(11.6702634, 72.313323)
我希望这有帮助

查看您的数据

>>> 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)
最短的蟒蛇式答案是:

nearest = min(cooList, key=lambda x: distance(x, coordinate))
使用函数distancea,b将点a和点b之间的距离作为浮点值返回,您必须自己定义

现在,您必须决定如何计算距离:使用简单的a²+b²=c²、一些地理公式或专用库。

获取您的数据

cooList = [(11.6702634, 72.313323), (31.67342698, 78.465323)]
coordinate = (11.6702698, 78.113323)
最短的蟒蛇式答案是:

nearest = min(cooList, key=lambda x: distance(x, coordinate))
使用函数distancea,b将点a和点b之间的距离作为浮点值返回,您必须自己定义



现在,您必须决定如何计算距离:使用简单的a²+b²=c²、一些地理公式或专用库。

展示您的尝试。如果您向我们展示您已经尝试过的,它将帮助我们提供更好的答案。这样你就不会说哦,谢谢你的帮助,但我已经试过了。你如何定义距离?展示你的尝试。如果你展示你已经尝试过的,它将帮助我们给你一个更好的答案。这样你就不会说哦,谢谢你的帮助,但我已经试过了。如何定义距离?可以跳过sqrt以提高速度。我知道,在这种情况下,返回的值将不再是两点之间的距离。如果@Jothimani需要特殊的速度,因为他们的列表有点大,例如,他们可以修改代码使其符合他们的需要。你可以跳过sqrt以提高速度。我知道,在这种情况下,这将起作用,但是,返回的值将不再是两点之间的距离。如果@Jothimani需要特别的速度,因为他们的列表有点大,例如,他们可以修改代码,使其符合他们的需要。啊。为什么不使用一些pythonic函数,比如min或math.hypop?没有必要重新发明轮子……@sloth在这里-您还可以使用key=lambda c:math.hypotc[0]-坐标[0],c[1]-坐标[1]。请注意,您还有一个输入错误:坐标[0]而不是坐标[1],谢谢您的更正。我同意math.hypot在某种意义上更好,但有时我认为math库设计得太过了。欧几里德距离对于纬度和经度不是很有用。小距离也可以,但大距离和/或靠近两极的地区效果不太好。为什么不使用一些pythonic函数,比如min或math.hypop?没有必要重新发明轮子……@sloth在这里-您还可以使用key=lambda c:math.hypotc[0]-坐标[0],c[1]-坐标[1]。请注意,您还有一个输入错误:坐标[0]而不是坐标[1],谢谢您的更正。我同意math.hypot在某种意义上更好,但有时我认为math库设计得太过了。欧几里德距离对于纬度和经度不是很有用。小距离也可以,但在较大距离和/或两极附近区域效果不太好。有一个错误:NameError:全局名称“distance”不是defined@Jothimani请不要告诉我你不能用谷歌搜索python点distance@Jothimani:您可以使用该函数计算欧几里德距离。但是,请注意,查找d1