Как вложить список на основе возрастающих последовательностей и игнорировать перекрывающиеся диапазоны ⇐ Python
Как вложить список на основе возрастающих последовательностей и игнорировать перекрывающиеся диапазоны
Это мой вклад
мой список = [2, 7, 8, 11, 7, 9, 10, 15, 22, 30, 32] [*]от 2 до 11, оно увеличивается, поэтому нам нужно получить мин-макс [2, 11] [*]от 7 до 10 оно увеличивается, но нам нужно игнорировать это, потому что диапазон (от 7 до 10) включены в первый полученный список. [*]от 15 до 32, оно увеличивается, поэтому нам нужно ухватить минимум максимум: [15, 32] Окончательный список должен быть: [[2, 11], [15, 32]]
Я пробовал что-то вроде ниже, но это не так:
final = [] ми = мой список[0] ма = мой список[1] для i, j в zip(mylist, mylist[1:]): если я < j: ма = j Элиф я > j: ми = я продолжать элиф ми == ма: продолжать Final.append([ми, ма]) финальный [[1, 10], [1, 11], [1, 23], [23, 23], [23, 30], [23, 43], [23, 43], [23, 55]] обновление:
Позвольте мне добавить больше сценариев:
[*]для [5, 8, 10, 3, 4, 5, 7] мы должны получить [[5,10]], потому что даже если [ 3, 7] перекрывается с [5, 10], начало [3, 7] находится позади [5, 10]< /код> для [5, 8, 10, 8, 9, 12] мы должны получить [[5,12]], то есть [5,10] ] ∪ [8, 12], потому что [8, 12] перекрывается с [5, 10] справа (перед ним) для [1, 3, 5, 4, 3, 2, 1] мы должны получить [[1, 5]], потому что от 4 до 1 это убывающая последовательность, поэтому нам придется ее игнорировать.
Мне не обязательно нужен код Python. Мне просто нужен алгоритм или правильный способ решения этой проблемы.
Это мой вклад
мой список = [2, 7, 8, 11, 7, 9, 10, 15, 22, 30, 32] [*]от 2 до 11, оно увеличивается, поэтому нам нужно получить мин-макс [2, 11] [*]от 7 до 10 оно увеличивается, но нам нужно игнорировать это, потому что диапазон (от 7 до 10) включены в первый полученный список. [*]от 15 до 32, оно увеличивается, поэтому нам нужно ухватить минимум максимум: [15, 32] Окончательный список должен быть: [[2, 11], [15, 32]]
Я пробовал что-то вроде ниже, но это не так:
final = [] ми = мой список[0] ма = мой список[1] для i, j в zip(mylist, mylist[1:]): если я < j: ма = j Элиф я > j: ми = я продолжать элиф ми == ма: продолжать Final.append([ми, ма]) финальный [[1, 10], [1, 11], [1, 23], [23, 23], [23, 30], [23, 43], [23, 43], [23, 55]] обновление:
Позвольте мне добавить больше сценариев:
[*]для [5, 8, 10, 3, 4, 5, 7] мы должны получить [[5,10]], потому что даже если [ 3, 7] перекрывается с [5, 10], начало [3, 7] находится позади [5, 10]< /код> для [5, 8, 10, 8, 9, 12] мы должны получить [[5,12]], то есть [5,10] ] ∪ [8, 12], потому что [8, 12] перекрывается с [5, 10] справа (перед ним) для [1, 3, 5, 4, 3, 2, 1] мы должны получить [[1, 5]], потому что от 4 до 1 это убывающая последовательность, поэтому нам придется ее игнорировать.
Мне не обязательно нужен код Python. Мне просто нужен алгоритм или правильный способ решения этой проблемы.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение