我正在编写一个判断时间片是否重叠的脚本.
我有一个处理程序函数,如下所示:
def intersection_checker(foo, bar):
if foo == bar:
return True
if foo[0] == bar[1] or foo[1] == bar[0]:
return True
if bar[0] < (foo[0] or foo[1]) < bar[1]:
return True
if foo[0] < (bar[0] or bar[1]) < foo[1]:
return True
return False
对象foo
是两个datetime.time()
对象的元组:
foo = (datetime.strptime('06:30:00','%H:%M:%S').time(), datetime.strptime('08:15:00','%H:%M:%S').time())
对象bar
是类FOO的datetime.time()
个对象中的set()
个.该集合可以包括200+k个对象.
调用处理程序(intersection_checker
)的行如下所示:
...
if len(bar) > 1 and True in set(map(intersection_checker, repeat(foo), bar)):
...
这个代码起作用了.问题是,处理如此大量的数据需要几个世纪的时间.我try 使用for循环迭代槽函数,但效果不如使用内置map.也许有一种方法可以更高效地传输和处理大量数据?或者以不同的方式判断交叉口?是的,只找到前True
个值就足够了,不需要遍历整个条形图.