1
我有個時隙(日期,結束日期),由開始日期排序名單如下:比較蟒蛇時隙
slots = [(datetime.datetime(2017, 10, 2, 6, 0), datetime.datetime(2017, 10, 2, 17, 40)),
(datetime.datetime(2017, 10, 2, 10, 35), datetime.datetime(2017, 10, 2, 16, 25)),
(datetime.datetime(2017, 10, 2, 11, 0), datetime.datetime(2017, 10, 2, 12, 0)),
(datetime.datetime(2017, 10, 2, 12, 0), datetime.datetime(2017, 10, 2, 13, 0)),
(datetime.datetime(2017, 10, 2, 15, 0), datetime.datetime(2017, 10, 2, 16, 0)),
(datetime.datetime(2017, 10, 2, 18, 0), datetime.datetime(2017, 10, 2, 19, 0))]
我想刪除所有時隙與包括開始日期和結束日期在另一個時間段呈現這個列表。
所以在這裏,例如,最終的結果應該是:
slots = [(datetime.datetime(2017, 10, 2, 6, 0), datetime.datetime(2017, 10, 2, 17, 40)),
(datetime.datetime(2017, 10, 2, 18, 0), datetime.datetime(2017, 10, 2, 19, 0))]
我試圖用下面的函數來減少它,但它不工作:
reduce(slots_removal, slots)
def slots_removal(a, b):
if a[1] > b[1]:
del b
這將產生:
TypeError: 'NoneType' object has no attribute '__getitem__'"
您的輸入是否總是排序?部分重疊怎麼樣(開始在前一個結束之前,但結束在之後)? –
嗨@MartijnPieters,是的,我排序輸入,以便更容易過濾使用'slots = sorted(current_schedule,key = lambda x:x [0])' 所以開始可以在前一個條目和結束之前之後,但它不應該影響結果,不是嗎? – chdecultot