2

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

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

4

1 回答 1

2

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

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

b = [x for x in b if a[0] < x[1] and x[0] < a[1]]
于 2012-09-12T14:43:50.277 回答