Как найти ближайшую пару или тройку, группу последовательных чисел из списка python

#python-3.x

#python-3.x

Вопрос:

у меня есть список значений [4, 5, 18, 19, 20, 30, 31] , и я пытаюсь создать пару, тройку или 4,5.

 l = [4, 5, 18, 19, 20, 30, 31]
  

этот список необходимо преобразовать как p_list

 p_list = [(4,5),(18,19,20),(30,31)]
  

Комментарии:

1. Какие характеристики значений списка определяют, является ли следующее значение частью кортежа? например, похоже, что разница между 5 и 18 является причиной для запуска нового кортежа, а разница между 32 и 34 — нет. Каково минимальное смещение, которое запускает начало нового кортежа?

2. на самом деле этот список содержит даты календаря из бронирования отеля, и каждый кортеж доступен через несколько дней после календаря, а разница между каждым элементом кортежа равна 1, допустим (4,5) 5-4 = 1 и (18,19,20) 19-18 =1 , 20-19=1.

3. Ваш список имеет шаблон, который позволяет группировать по последовательным целым числам. Я не знаю, так ли это для вас. Если это так, вы достигнете ожидаемого результата с [tuple(g) for g in more_itertools.consecutive_groups(l)] помощью .

4. это работает, чувак.