fork download
  1. from datetime import datetime as dt
  2.  
  3. class TimeInfo:
  4. def __init__(self,From,To):
  5. self.From= From
  6. self.To = To
  7.  
  8. dataInfos=[]
  9.  
  10. dataInfos.append(TimeInfo(202201230700, 202201230800))
  11. dataInfos.append(TimeInfo(202201230730, 202201230900))
  12. dataInfos.append(TimeInfo(202201231015, 202201231045))
  13. dataInfos.append(TimeInfo(202201231000, 202201231100))
  14. dataInfos.append(TimeInfo(202201231400, 202201231500))
  15. dataInfos.append(TimeInfo(202201231630, 202201231700))
  16. dataInfos.append(TimeInfo(202201231300, 202201231600))
  17. dataInfos.append(TimeInfo(202201230600, 202201230730))
  18.  
  19. dataInfos= sorted(dataInfos, key=lambda datetime: datetime.From) #①From時間で昇順に並べる。
  20.  
  21. bx=0 #基準データの添え字をbxとする。最初はbx=0とする。
  22.  
  23. for i in range(1,len(dataInfos)): #i = 1からN-1まで繰り返す。(④~⑥の繰り返し)
  24. #print(dataInfos[i].From)
  25. if dataInfos[i].From > dataInfos[bx].To: #データ[i]のFrom時間>基準データのTo時間の場合、このデータをbx+1へ登録する。
  26. dataInfos[bx+1]=dataInfos[i]
  27. bx=bx+1 #bxに1加算。
  28. continue
  29. if dataInfos[i].To > dataInfos[bx].To: #データ[i]のTo時間>基準データのTo時間の場合、
  30. dataInfos[bx].To = dataInfos[i].To #基準データのTo時間へデータ[i]のTo時間を設定
  31.  
  32. for i in range(0,bx+1):
  33. print(dataInfos[i].From ,"~",dataInfos[i].To)
  34.  
Success #stdin #stdout 0.03s 9464KB
stdin
Standard input is empty
stdout
202201230600 ~ 202201230900
202201231000 ~ 202201231100
202201231300 ~ 202201231600
202201231630 ~ 202201231700