from datetime import datetime as dt
class TimeInfo:
def __init__(self,From,To):
self.From= From
self.To = To
dataInfos=[]
dataInfos.append(TimeInfo(202201230700, 202201230800))
dataInfos.append(TimeInfo(202201230730, 202201230900))
dataInfos.append(TimeInfo(202201231015, 202201231045))
dataInfos.append(TimeInfo(202201231000, 202201231100))
dataInfos.append(TimeInfo(202201231400, 202201231500))
dataInfos.append(TimeInfo(202201231630, 202201231700))
dataInfos.append(TimeInfo(202201231300, 202201231600))
dataInfos.append(TimeInfo(202201230600, 202201230730))
dataInfos= sorted(dataInfos, key=lambda datetime: datetime.From) #①From時間で昇順に並べる。
bx=0 #基準データの添え字をbxとする。最初はbx=0とする。
for i in range(1,len(dataInfos)): #i = 1からN-1まで繰り返す。(④~⑥の繰り返し)
#print(dataInfos[i].From)
if dataInfos[i].From > dataInfos[bx].To: #データ[i]のFrom時間>基準データのTo時間の場合、このデータをbx+1へ登録する。
dataInfos[bx+1]=dataInfos[i]
bx=bx+1 #bxに1加算。
continue
if dataInfos[i].To > dataInfos[bx].To: #データ[i]のTo時間>基準データのTo時間の場合、
dataInfos[bx].To = dataInfos[i].To #基準データのTo時間へデータ[i]のTo時間を設定
for i in range(0,bx+1):
print(dataInfos[i].From ,"~",dataInfos[i].To)
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUgYXMgZHQKCmNsYXNzIFRpbWVJbmZvOgoJZGVmIF9faW5pdF9fKHNlbGYsRnJvbSxUbyk6CgkJc2VsZi5Gcm9tPSBGcm9tCgkJc2VsZi5UbyA9IFRvCgpkYXRhSW5mb3M9W10KCmRhdGFJbmZvcy5hcHBlbmQoVGltZUluZm8oMjAyMjAxMjMwNzAwLCAyMDIyMDEyMzA4MDApKQpkYXRhSW5mb3MuYXBwZW5kKFRpbWVJbmZvKDIwMjIwMTIzMDczMCwgMjAyMjAxMjMwOTAwKSkKZGF0YUluZm9zLmFwcGVuZChUaW1lSW5mbygyMDIyMDEyMzEwMTUsIDIwMjIwMTIzMTA0NSkpCmRhdGFJbmZvcy5hcHBlbmQoVGltZUluZm8oMjAyMjAxMjMxMDAwLCAyMDIyMDEyMzExMDApKQpkYXRhSW5mb3MuYXBwZW5kKFRpbWVJbmZvKDIwMjIwMTIzMTQwMCwgMjAyMjAxMjMxNTAwKSkKZGF0YUluZm9zLmFwcGVuZChUaW1lSW5mbygyMDIyMDEyMzE2MzAsIDIwMjIwMTIzMTcwMCkpCmRhdGFJbmZvcy5hcHBlbmQoVGltZUluZm8oMjAyMjAxMjMxMzAwLCAyMDIyMDEyMzE2MDApKQpkYXRhSW5mb3MuYXBwZW5kKFRpbWVJbmZvKDIwMjIwMTIzMDYwMCwgMjAyMjAxMjMwNzMwKSkKCmRhdGFJbmZvcz0gc29ydGVkKGRhdGFJbmZvcywga2V5PWxhbWJkYSBkYXRldGltZTogZGF0ZXRpbWUuRnJvbSkgI+KRoEZyb23mmYLplpPjgafmmIfpoIbjgavkuKbjgbnjgovjgIIKCmJ4PTAgI+Wfuua6luODh+ODvOOCv+OBrua3u+OBiOWtl+OCkmJ444Go44GZ44KL44CC5pyA5Yid44GvYng9MOOBqOOBmeOCi+OAggoKZm9yIGkgaW4gcmFuZ2UoMSxsZW4oZGF0YUluZm9zKSk6ICNpID0gMeOBi+OCiU4tMeOBvuOBp+e5sOOCiui/lOOBmeOAgu+8iOKRo++9nuKRpeOBrue5sOOCiui/lOOBl++8iQoJI3ByaW50KGRhdGFJbmZvc1tpXS5Gcm9tKQoJaWYgZGF0YUluZm9zW2ldLkZyb20gPiBkYXRhSW5mb3NbYnhdLlRvOiAj44OH44O844K/W2ld44GuRnJvbeaZgumWkz7ln7rmupbjg4fjg7zjgr/jga5Ub+aZgumWk+OBruWgtOWQiOOAgeOBk+OBruODh+ODvOOCv+OCkmJ4KzHjgbjnmbvpjLLjgZnjgovjgIIKCQlkYXRhSW5mb3NbYngrMV09ZGF0YUluZm9zW2ldCgkJYng9YngrMSAjYnjjgavvvJHliqDnrpfjgIIKCQljb250aW51ZQoJaWYgZGF0YUluZm9zW2ldLlRvID4gZGF0YUluZm9zW2J4XS5UbzogCSPjg4fjg7zjgr9baV3jga5Ub+aZgumWkz7ln7rmupbjg4fjg7zjgr/jga5Ub+aZgumWk+OBruWgtOWQiOOAgQoJCWRhdGFJbmZvc1tieF0uVG8gPSBkYXRhSW5mb3NbaV0uVG8JI+Wfuua6luODh+ODvOOCv+OBrlRv5pmC6ZaT44G444OH44O844K/W2ld44GuVG/mmYLplpPjgpLoqK3lrpoKCmZvciBpIGluIHJhbmdlKDAsYngrMSk6CglwcmludChkYXRhSW5mb3NbaV0uRnJvbSAsIn4iLGRhdGFJbmZvc1tpXS5UbykK