如何遍历python中的列表以计算距离

时间:2019-06-09 19:16:10

标签: python-3.x

我一直在尝试根据给定的纬度和经度来计算两个位置之间的距离。

变量是随机的,并且来自生成的语义注释。

for coordinates in g.objects(None, predicate=URIRef('http://www.w3.org/ns/prov#generatedAtCoordinates')):
  final_coordinates = coordinates
  data = final_coordinates.split(",")
  latitude = float(data[0])
  longitude = float(data[1])
  calc_distance = (latitude, longitude)
  print(geopy.distance.distance(calc_distance, calc_distance).km)

calc_distance的打印方式是:

(41.40254048829099, 2.095129446086901)
(41.409459057215216, 2.0941780489196367)
(41.40506757803259, 2.0903966716404754)
(41.40081272870648, 2.0936534707551835)
(41.40569962731158, 2.0947062169907373)
(41.40513399283631, 2.09682546591496)

这些是随机生成的值,我希望从现在开始。我正在使用geopy距离计算器。

我想我做不到,因为我一直都在同一个循环中,如何定义全局变量,将其保存在列表中,然后遍历该列表以计算Python中的距离? / p>

很抱歉,这个问题太基本了,或者不知所措,但是我的大脑停了下来,我无法思考。

原始脚本是:

import geopy.distance

coords_1 = (41.43737599306035, 2.1302325410348084)
coords_2 = (41.42535528994254, 2.1898592767949556)

print(geopy.distance.distance(coords_1, coords_2).km)

因此,它将从第一个值开始,然后是第一和第二之间的距离,然后是第二和第三,然后是第三和第四等等。

1 个答案:

答案 0 :(得分:0)

解决此问题的一种简单方法是将所有点附加到列表中。然后根据需要分离列表,假设您想要相邻点的距离。然后遍历列表以获取每两个的距离。像这样:

distance_list = []
for coordinates in g.objects(None, predicate=URIRef('http://www.w3.org/ns/prov#generatedAtCoordinates')):
  final_coordinates = coordinates
  data = final_coordinates.split(",")
  latitude = float(data[0])
  longitude = float(data[1])
  calc_distance = (latitude, longitude)
  print(geopy.distance.distance(calc_distance, calc_distance).km)
  distance_list + geopy.distance.distance(calc_distance, calc_distance).km

for dis_1, dis_2 in zip(distance_list, distance_list[1:])[::2]
   # Split the list into groups of two
   print(geopy.distance.distance(dis_1, dis_2).km)

Here是如何将列表分成几对的示例。