python中的时间间隔重叠

时间:2012-09-12 14:39:35

标签: python list datetime intervals

假设我有时间间隔列表,如

a = [datetime.time(0,0),datetime.time(8,0)]

现在我在列表中有大量的间隔,如下所示。

b = [[datetime.time(0,0),datetime.time(8,0)], [datetime.time(0,0),datetime.time(10,0)], [datetime.time(0,0),datetime.time(23,59,59)], [datetime.time(15,0),datetime.time(9,0)], [datetime.time(9,0),datetime.time(15,0)]]

我们必须使用包含间隔a的间隔来过滤列表b。比如示例结果将是。

b = [[datetime.time(0,0),datetime.time(8,0)], [datetime.time(0,0),datetime.time(10,0)], [datetime.time(0,0),datetime.time(23,59,59)], [datetime.time(15,0),datetime.time(9,0)]]

注意:我已将结束时间从00更改为23:59:59但是案例仍然存在,因为我们需要了解00:00到08:00的每日间隔包含在15:00到09之间的时间间隔: 00

提示: 我将15:00到09:00划分为两个区间:00:00-09:00和15:00-23:59:59

1 个答案:

答案 0 :(得分:2)

您的代码有错误(使用datetime/datetime.time)。

此代码将从b过滤掉与a不重叠的所有内容:

b = [x for x in b if a[0] < x[1] and x[0] < a[1]]