Как объединить 2 списка в список временных интервалов, если времена являются последовательными? - PullRequest
0 голосов
/ 24 февраля 2020

С учетом этого календаря интервалов времени, когда человек забронирован:

list = [['10:00','11:30'],['12:30','14:30'],['14:30','15:00'],['16:00','17:00'],['17:30','20:00'],['20:00','21:00']]

пример: человек забронирован с 10:00 до 11:30 и свободен с 11:30 до 12:30. , PS: каждый подсписок является назначением. я хотел бы сделать python скрипт, который может упорядочить список так:

output =[['10:00','11:30'],['12:30','15:00'],['16:00','17:00'],['17:30','21:00']]

, где мы объединяем последовательные встречи, когда время окончания первого равно времени окончания первого второй.

1 Ответ

0 голосов
/ 24 февраля 2020

Попробуйте:

list = [['10:00','11:30'],['12:30','14:30'],['14:30','15:00'],['16:00','17:00'],['17:30','20:00'],['20:00','21:00']]


merged = []
for appt in list:
  if len(merged) == 0:
    merged.append(appt)
  else:
    last = merged[-1]
    if appt[0] == last[1]:
      last[1] = appt[1]
    else:
      merged.append(appt)

print(merged)

Дает:

[['10:00', '11:30'], ['12:30', '15:00'], ['16:00', '17:00'], ['17:30', '21:00']]
...