我想弄清楚一個方法來找到此列表中連續的一對項之間的時間滯後。兩個時間項之間的區別
L1=[['8/1/2000', '0:00:16'],
['8/1/2008', '0:23:09'],
['8/2/2008', '12:32:16'],
['8/2/2008', '0:38:29']]
所以輸出看起來像圖1和2 = 0時22分53秒,但圖2和3之間的差之間的差希望24小時+/-差而不僅僅是0時06分58秒。希望這是有道理的。任何幫助表示讚賞。
我想弄清楚一個方法來找到此列表中連續的一對項之間的時間滯後。兩個時間項之間的區別
L1=[['8/1/2000', '0:00:16'],
['8/1/2008', '0:23:09'],
['8/2/2008', '12:32:16'],
['8/2/2008', '0:38:29']]
所以輸出看起來像圖1和2 = 0時22分53秒,但圖2和3之間的差之間的差希望24小時+/-差而不僅僅是0時06分58秒。希望這是有道理的。任何幫助表示讚賞。
由於這似乎是一個匆匆奔跑的問題,所以我會簡單地向您指出datetime模塊的方向,給出一個示例,然後將其餘部分留給您。
首先,我們將把您的字符串(或我們已經假定是字符串)到datetime對象:
>>> from datetime import datetime
>>> L1 = [['8/1/2000', '0:00:16'], ['8/1/2008', '0:23:09'], ['8/2/2008', '12:32:16'], ['8/2/2008', '0:38:29']]
>>> d1 = [datetime.strptime(' '.join(dt), '%m/%d/%Y %H:%M:%S') for dt in L1]
>>> d1
[datetime.datetime(2000, 8, 1, 0, 0, 16), datetime.datetime(2008, 8, 1, 0, 23, 9), datetime.datetime(2008, 8, 2, 12, 32, 16), datetime.datetime(2008, 8, 2, 0, 38, 29)]
>>> for d in d1:
... print(d)
...
2000-08-01 00:00:16
2008-08-01 00:23:09
2008-08-02 12:32:16
2008-08-02 00:38:29
這些我們可以簡單地減,生產timedelta對象:
>>> diffs = [y-x for x,y in zip(d1, d1[1:])]
>>> diffs
[datetime.timedelta(2922, 1373), datetime.timedelta(1, 43747), datetime.timedelta(-1, 43573)]
>>> for diff in diffs:
... print(diff)
...
2922 days, 0:22:53
1 day, 12:09:07
-1 day, 12:06:13
你的'L1'行會產生一個SyntaxError。元素是否實際上是字符串?如果是這樣,他們看起來像是'8/1/2000,0:00:16'還是'8/1/2000','0:00:16'? – DSM
我假設他們是字符串並進行相應編輯。如果我錯誤地做了這些,讓我知道或者隨時回滾。 – kojiro
你是如何在2到3之間得到0:06:58的?或者說,「時間滯後」意味着什麼(我不太清楚「時滯」是什麼) – MxyL