【发布时间】:2019-05-14 03:22:17
【问题描述】:
我有这段代码目前针对一个列表运行 for 循环
data3 = []
x=0
while x<len(river_df_list):
for line in river_df_list[x]:
try:
distance = haversine(river_df_list[x][0],river_df_list[x][1],df1_list[0][4],df1_list[0][3])
data3.append(distance)
x=x+1
except IndexError:
pass
df1_list[0].append(data3.index(min(data3)))
半正弦函数在哪里:
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
r = 6371 # Radius of earth in kilometers. Use 3956 for miles
return c * r
river_df_list(缩短)看起来像:
[[151.7753278, -32.90526725, 'HUNTER RIVER']
[151.77526830000002, -32.90610052, 'HUNTER RIVER']
[151.775397, -32.90977754, 'HUNTER RIVER']
[151.775578, -32.91202941, 'HUNTER RIVER']
[151.77586340000002, -32.91508789, 'HUNTER RIVER']
[151.7764116, -32.91645856, 'HUNTER RIVER']
[151.7773432, -32.91905274, 'HUNTER RIVER']
[151.7784225, -32.91996844, 'HUNTER RIVER']
[151.780565, -32.92181352, 'HUNTER RIVER']
[151.7807739, -32.92183623, 'HUNTER RIVER']
[151.78591709999998, -32.92187872, 'HUNTER RIVER']]
df1_list(缩短)看起来像:
[[5, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '14/08/2015']
[6, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '15/08/2015']
[7, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '16/08/2015']
[8, 'A69-1601-27466', 'Golden perch', -35.5065473, 144.4488804, '17/08/2015']]
目前,当我在顶部运行代码时,我能够循环遍历river_df_list 并将haversine 函数应用于df1_list 中的第一个点。最后,代码将 data3 中出现最小值的索引附加到 df1_list 中,因此现在看起来像:
[5, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '14/08/2015',324110 ]
[6, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '15/08/2015']
[7, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '16/08/2015']
[8, 'A69-1601-27466', 'Golden perch', -35.5065473, 144.4488804, '17/08/2015']
我想要做的是更改顶部的 while / for 循环,以比较 River_df_list 的所有点在 df1_list 的每个点上,并将索引附加到 df1_list 的末尾,所以最后,所需的输出将是:
[[5, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '14/08/2015',324110 ]
[6, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '15/08/2015',32440]
[7, 'A69-1601-27466', 'Golden perch', -35.495479100000004, 144.45295380000002, '16/08/2015',31110]
[8, 'A69-1601-27466', 'Golden perch', -35.5065473, 144.4488804, '17/08/2015',35479]]
我该怎么做呢?
【问题讨论】:
标签: python-3.x loops for-loop while-loop