我有以下格式的元组:
tup = [('15MAR18 103000', '15MAR18 103758'), ('15MAR18 103555', '15MAR18 121308')] etc...
格式为tup = [(a,b), (a,b)]
,其中a = start_end
和b = end_time
我试图标记开始和结束之间的日期是否与任何其他开始和结束日期时间冲突......
然后我需要标记它是否碰撞并插入每个嵌套元组'Y / N'
我并不完全需要如何构建逻辑。
我想我需要找出是否有任何开始时间小于上一个结束时间。
for x in range(0, len(tup)):
if tup[x-1][0] > tup[x][1]
.....
答案 0 :(得分:0)
这是蛮力方法。有优化的余地。
from datetime import datetime
nested_tup = [('15MAR18 103000', '15MAR18 103758'),
('15MAR18 103555', '15MAR18 121308'),
('16MAR18 103555', '16MAR18 121308')]
def check_overlap(x, lst):
for i in lst:
if (i[0] < x[0] < i[1]) or (i[0] < x[1] < i[1]):
return True
else:
return False
lst = [tuple(datetime.strptime(i, '%d%b%y %H%M%S') for i in x) for x in nested_tup]
res = [check_overlap(x, lst) for x in lst]
nested_tup = [i + (j,) for i, j in zip(nested_tup, res)]
# [('15MAR18 103000', '15MAR18 103758', True),
# ('15MAR18 103555', '15MAR18 121308', True),
# ('16MAR18 103555', '16MAR18 121308', False)]