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 的輸出是正確的。請你確認一下好嗎?
添加回答
舉報