Time Interval overlap in python

元气小坏坏 提交于 2019-12-04 05:20:01

问题


Suppose I have list of time interval like

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

Now I Have lacs of intervals in list like given below.

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)]]

We have to filter list b with intervals containing interval a. like in example result will be.

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)]]

Note: I have changed end time from 00 to 23:59:59 but the case remain persistent as we need to understand that daily interval of 00:00 to 08:00 is contained in interval of 15:00 to 09:00

Hint: I have divided 15:00 to 09:00 into two intervals: 00:00-09:00 and 15:00-23:59:59


回答1:


Your code has errors (usage of datetime/datetime.time).

This code will filter out from b everything, that does not overlap with a:

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


来源:https://stackoverflow.com/questions/12390698/time-interval-overlap-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!