Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 城市列表之间计算距离的算法_Python_Algorithm_Math - Fatal编程技术网

Python 城市列表之间计算距离的算法

Python 城市列表之间计算距离的算法,python,algorithm,math,Python,Algorithm,Math,我正在使用python及其第三方库geopy 例如,如果我有一个城市列表 cities = ["New York, NY","Chicago, IL","Denver, CO"] 我得到了它们的纬度和经度: location = [(40.0149856, -105.2705456), (40.7127837, -74.0059413), (41.8781136, -87.6297982), (39.737567, -104.9847179)] 我的问题是: 从34.0522342-118.

我正在使用python及其第三方库geopy

例如,如果我有一个城市列表

cities = ["New York, NY","Chicago, IL","Denver, CO"]
我得到了它们的纬度和经度:

location = [(40.0149856, -105.2705456), (40.7127837, -74.0059413), (41.8781136, -87.6297982), (39.737567, -104.9847179)]
我的问题是:

  • 从34.0522342-118.2436849开始
  • 比较startpoint和列表中城市之间的距离,找到最接近的地方 最近的
  • 从那个地方,找到下一个最近的[除了 起点]
  • 重复此操作,直到所有位置都使用完毕。得到 总距离

  • 我如何用python编写这个?或者算法是什么?

    Geopy能够使用vincenty或great_圆计算距离。在列表中循环查找最小距离,将该距离添加到该位置的总弹出框中,然后重复。 比如:

    total = 0  
    while location != []:  
        test = float("inf")  
        for loc in location:  
            #do distance calc here set = to dist  
            if dist < test:  
                test = dist  
                temp = loc  
        total += test  
        location.remove(loc)
    
    total=0
    而位置!=[]:  
    测试=浮动(“inf”)
    对于位置中的loc:
    #此处距离计算是否设置为距离
    如果距离<试验:
    测试=距离
    温度=loc
    总数+=测试
    位置。移除(loc)
    
    我就是这么想的。但是,在比较第一个列表之后,如何循环遍历该列表。例如,如果我发现纽约是通往起点的壁橱,如何检查下一个是谁?列表的长度将改变我的答案,该答案应该接近您想要的答案。什么是“test=float(“inf”)?非常感谢您,我认为location.remove(loc)是我想让测试集尽可能大,从而允许将您计算的第一个距离设置为test。使用标志还有其他方法,但这种方法简单明了。我已经将列表与起始点进行了比较。例如,如果我发现纽约是一个壁橱,我不知道如何将它与列表中的其他城市进行比较。