簡體   English   中英

比較和附加不同長度的python列表

[英]comparing and appending python lists of different lengths

我有兩個時間清單( time包含140個不同時間戳的元素,而sessionStart具有13個記錄試驗開始的元素)。 我需要比較這兩個列表發現,當每個元素在time比第一要素大sessionStart比第二元件,而且小sessionStart 如果代碼與空列表start匹配,則該代碼應附加sessionStart的第一個元素。 運行時, start保持為空

x = 0
while x < len(time):
    i = 0
    while i < len(sessionStart)-1 and x < len(time):
        if time[x] >= sessionStart[i] and time[x] < sessionStart[i+1]:
            start.append(sessionStart[i])
            i += 1
        else:
            x += 1

必須先聲明start列表,然后才能使用它,並且該列表應在使用的任何循環之外 ,否則它將被覆蓋。

您還可以使用幾個python函數更簡單地遍歷這些列表:

    start = []

    for element in time:
        for i in range(len(sessionStart)-1):
            if element >= sessionStart[i] and element < sessionStart[i+1]:
                start.append(sessionStart[i])
  • for x in my_list將遍歷名為my_list的列表中的每個元素(可以與變量x一起使用)。
  • for in range(value)從0到(value-1)的長度進行迭代,因此無需使用索引變量,每次都將其加1

此外,如果要比較時間戳,則應使用datetime庫將它們轉換為datetime對象。

例如,如果您的時間戳是“ 2018-08-15”,則可以通過執行datetime.datetime.strptime(timestamp, '%Y-%m-%d')將其轉換為日期進行比較

因此,在循環中使用的結果如下所示:

    from datetime import datetime
    start = []

    for timestamp in time:
        timestamp = datetime.strptime(timestamp, '%Y-%m-%d')
        for i in range(len(sessionStart)-1):
            if timestamp >= datetime.strptime(sessionStart[i], '%Y-%m-%d')
                and timestamp < datetime.strptime(sessionStart[i+1], '%Y-%m-%d'):
            start.append(sessionStart[i])

當然,假設您的時間戳為YYYY-MM-DD格式(我確定不是),則必須根據您的時間戳格式更新格式字符串,還可以獲取秒,毫秒,分鍾,等,在上面的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM