亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以負數輸出時間距離以創建序列

以負數輸出時間距離以創建序列

qq_遁去的一_1 2021-08-17 16:03:54
一個項目需要一點幫助。我有兩個列表,每個列表包含 4 個或更多特定周 - True_SH:[Timestamp('2012-01-08 00:00:00'), Timestamp('2012-04-22 00:00:00'), Timestamp('2012-08-19 00:00:00'), Timestamp('2012-10-07 00:00:00')真_SL:[Timestamp('2011-11-20 00:00:00'), Timestamp('2012-03-25 00:00:00'), Timestamp('2012-05-13 00:00:00'), Timestamp('2012-09-02 00:00:00')它們交替出現,并且不可能一個接一個地有兩個 SL 或 SH,在本例中:SL->SH->SL->SH->SL->SH->SL->SH如何使用以下規則輸出第三個列表中日期之間的周數距離 - 從 SL 到 SH 的距離產生正數,而從 SH 到 SL 的距離輸出負數周數?該數字應包括計數中的開始周和結束周。在此示例中,前兩個的距離:(1st)SL('2011-11-20 00:00:00') 到 (2nd) SH('2012-01-08 00:00:00') 輸出正 7,- > 從 2nd(SH) 到 (3rd) SL('2012-03-25 00:00:00') 的距離輸出 NEGATIVE -10 ,然后從 3rd(SL) 到 4th(SH) 再次輸出一個正數,然后從SH 到 SL 負等。我需要這個列表來進一步分析是否有重復序列。真的希望任何人都可以幫助我,因為我正在努力尋找一種方法來做到這一點。
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

我的方法是合并兩個數組,對合并后的數組進行排序,然后遍歷合并后的數組以計算相鄰日期之間的周數。然后,您可以測試兩個相鄰日期中較大的一個,以查看它來自哪個原始列表,如果它來自 true_sl 列表,則返回一個負值。


請注意,我對合并列表進行排序的選擇假定 true_sh 和 true_sl 列表中的日期將始終交錯。


這是代碼:


from datetime import datetime



true_sh = [datetime(2012, 1, 8), datetime(2012, 4, 22), datetime(2012, 8, 19), datetime(2012, 10, 7)]

true_sl = [datetime(2011, 11, 20), datetime(2012, 3, 25), datetime(2012, 5, 13), datetime(2012, 9, 2)]


out_array = true_sh

out_array.extend(true_sl)

out_array.sort()


for i, elem in enumerate(out_array):

    if i == 0:

        continue


    num_days = elem - out_array[i - 1]

    num_weeks = num_days.days // 7

    if elem in true_sl:

        num_weeks = -num_weeks


    print(num_weeks)

這是輸出:


7

-11

4

-3

14

-2

5

另請注意,您將預期的第二個輸出指定為 -10,但 2012 年 1 月 8 日和 2012 年 3 月 25 日之間有 77 天,因此我認為 -11 的輸出是正確的。請你確認一下好嗎?


查看完整回答
反對 回復 2021-08-17
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號