[英]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.