Python 城市列表之间计算距离的算法
我正在使用python及其第三方库geopy 例如,如果我有一个城市列表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.
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)]
我的问题是:
我如何用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。使用标志还有其他方法,但这种方法简单明了。我已经将列表与起始点进行了比较。例如,如果我发现纽约是一个壁橱,我不知道如何将它与列表中的其他城市进行比较。