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 的输出是正确的。请你确认一下好吗?
添加回答
举报