概述
题目:指定日期,从用户登录列表中找出用户该日期最可能的地理位置
给定节点列表testlist,包含节点名、节点的出现日期、纬度、经度。一个日期Nowtime。
如果该日期并未在节点列表中出现,则查找该节点之前出现最近的日期,拷贝该行到新列表。如果之前未出现过,则取该日期之后日期最近的一行拷贝。
最终每个节点都有一行出现在新列表。
这段代码可以估算出在指定时间,节点所处的位置。
= float(s_time)) and (float(log_time) < float(e_time)):
return start_t
#函数定义结束
# 列表日期按从大到小排列(从近到远)
testlist = [
['0','2015-03-28',39.759765375,-104.984303125],['0','2015-03-27',39.70999875,-104.95675168749999],'2015-03-24',39.72202824,-104.96074968],'2015-03-23',39.77230825,-105.0435074375],'2015-03-01',39.77455175,-105.01426466666665],'2015-02-02',39.76241472,-104.90343176000002],['1',3.758066,-8],'2015-01-03',3.76085332653061,['2',29.894691000000005,-81.314517],['3','2015-02-03',['4','2015-03-03',]
n = len(testlist)
newlist = []
ID = testlist[0][0] #将ID设为第一个节点
i = 0
j = -1
while i < n:
"""
保证每一行都在选定日期列表中出现
如果第一个日期小于指定日期,则取第一个
如果刚好能找到相关日期(或者位于两个日期中间的时间),则取相关日期(或前一个)
如果到该节点登陆日期的最后一行仍不匹配,取最后一行
"""
if i == n-1 and newlist[j][0] != ID:
newlist.append(testlist[i])
break
count = 1
# i+count是当前要处理的结点
while i+count < n:
# 新列表为空,或者当前ID并未出现在列表,则查找添加
if j == -1 or newlist[j][0] != ID:
# 如果新节点第一个日期符合条件(日期从大到小排列),则添加第一个
if getBestTime(Nowtime,testlist[i][1]):
newlist.append(testlist[i])
j += 1
print ID,testlist[i-1][0]
# 如果当前行和前一行属于同一节点,则取二者日期判断
elif testlist[i+count][0] == ID and testlist[i+count-1][0] == ID:
# 如果所求日期介于两者之间(大于等于后一个,小于前一个),则添加后一个更早的日期
if getBestTime(Nowtime,testlist[i+count][1],testlist[i+count-1][1]):
newlist.append(testlist[i+count])
j += 1
count+=1
break
count += 1
# 如果当前行的节点为新节点(同时原ID未添加),说明原ID最后一个日期最接近指定日期,添加该日期并更新ID
elif testlist[i+count][0] != ID:
newlist.append(testlist[i+count-1])
j += 1
ID = testlist[i+count][0]
break
# 当前行的ID已经在新列表中出现,跳出循环从下一个行开始。如果下一个为新节点,顺便则更新ID。
else:
if testlist[i+count][0] != ID:
ID = testlist[i+count][0]
break
i = i+count
print newlist
总结
以上是编程之家为你收集整理的python—指定日期,从用户登录列表中找出用户该日期最可能的地理位置全部内容,希望文章能够帮你解决python—指定日期,从用户登录列表中找出用户该日期最可能的地理位置所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧