您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python—指定日期,从用户登录列表中找出用户该日期最可能的地理位置

5b51 2022/1/14 8:25:24 python 字数 5695 阅读 792 来源 www.jb51.cc/python

题目:指定日期,从用户登录列表中找出用户该日期最可能的地理位置 给定节点列表testlist,包含节点名、节点的出现日期、纬度、经度。指定一个日期nowtime。

概述

题目:指定日期,从用户登录列表中找出用户该日期最可能的地理位置

给定节点列表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—指定日期,从用户登录列表中找出用户该日期最可能的地理位置所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶