假设我有时间间隔列表,例如
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
解决方法:
您的代码有错误(使用datetime / datetime.time).
此代码将从b的所有内容中过滤掉,但不与a重叠:
b = [x for x in b if a[0] < x[1] and x[0] < a[1]]