1
任務:移動對象每秒測量一些參數,應與每10分鐘測量10個靜止對象的測量值進行比較。在python中使用不同條件迭代多個列表
條件:移動物體應該在距靜止物體100米的範圍內,並且在運動和靜止測量之間的時間差爲+5分鐘,以便能夠比較參數。
解釋: time_m,time_s,lon_m,lat_m,lon_s,LAT_S,param1_m,param1_s,param2_m,param2_s等。(米,用於移動和s爲靜止的(從10個靜止物體所有的測量均在相同的列表))
問題:由於列表大約有10^5次測量,所以我的兩個for循環和兩個if語句的解決方案花費的時間太長。請你能幫我解決這個問題嗎?
我的解決辦法:
dt_m = [datetime.datetime.strptime(item, '%Y-%m-%dT%H:%M:%S') for item in time_m]
dt_s = [datetime.datetime.strptime(item, '%Y-%m-%dT%H:%M:%S') for item in time_s]
d = datetime.timedelta(minutes=5)
lon_hundred_m = 0.00180 #lon degrees for 100 m at lat 60
lat_hundred_m = 0.00090 #lat degrees for 100 m
for i in range(len(lon_m)):
for j in range(len(lon_s)):
if lon_m[i] >= (lon_s[j]-lon_hundred) and lon_m[i] <= (lon_s[j]+lon_hundred) and lat_m[i] >= (lat_s[j]-lon_hundred) and lat_m[i] <= (lat_s[j]+lon_hundred):
if dt_s[j] >= dt_m[i]-d and dt_s[j] <= dt_m[i]+d:
time_m_2.append(time_m[i])
param1_m_2.append(param1_m[i])
param2_m_2.append(param2_m[i])
lon_m_2.append(lon_m[i])
lat_m_2.append(lat_m[i])
time_s_2.append(time_s[j])
param1_s_2.append(param1_s[j])
param2_s_2.append(param2_s[j])
lon_s_2.append(lon_s[j])
lat_s_2.append(lat_s[j])
謝謝!