从for循环获取变量

时间:2019-10-25 12:02:13

标签: python

我正在计算两点(纬度,经度)的最近距离。我的代码如下:

R = 6378.0
distsecKM = []

for i in range(len(pLat)):
    lat1 = math.radians(pLat[i])
    lon1 = math.radians(pLon[i])
    temp = []
    for j in range(len(secondaryLat)):
        lat2 = math.radians(secondaryLat[j])
        lon2 = math.radians(secondaryLon[j])
        diffLat = lat2 - lat1
        diffLon = lon2 - lon1
        a = ((math.sin(diffLat / 2))**2) + (math.cos(lat2)) * (math.cos(lat1)) * ((math.sin(diffLon / 2))**2)
        b = 2 * math.atan2(sqrt(a), sqrt(1 - a))
        dist = R * b
        temp.append(dist)
    distsecKM.append(min(temp))

我正在得到point1(lat1,lon1)和point2(lat2,lon2)之间的最小距离。但是,我也想获取用于计算最小距离的lat2和lon2,并将其保存到列表中。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

(我假设您的意思是temptemp2相同。)

代替

temp.append(dist)

您可以简单地

temp.append((dist, lat2, lon2))

min(temp)的计算与以前相同,因为元组按字典顺序排序(即按第一项排序,如果按第二项相等,等等)。

如果您不进行任何其他更改,那么distsecKM将包含一个元组,而不是单个值,您必须将其解包,例如像这样:

dist, lat, lon = distsecKM[0]

或者如果您在for循环中使用它:

for dist, lat, lon in distsecKM:
    # ...

答案 1 :(得分:0)

您可以创建一个列表

lat2List = []
lon2List = []

,然后继续将值分别附加到这些列表中。

lat2List.push(lat2)
lon2List.push(lon2)