Я хотел бы генерировать подсписки определенным образом и в определенном порядке.
Идея алгоритма заключается в следующем:
- Внешний цикл: удалить элемент перед последним
- Внутренний цикл: удалить первый элемент
Вот пример, начинающийся со списка [A, B, C ,D]
:
[A, B, C, D]
[B, C, D] (remove first item)
[C, D] (remove first item)
[A, B, D] (remove before last item)
[B, D] (remove first item)
[A, D] (remove before last item)
[D] (remove before last item)
Единственное ограничение, которое у меня есть, заключается в том, чтоподсписок длиной один, содержащий только последний элемент, должен быть последним из созданного подсписка.
У меня нет никаких трудностей для реализации этого алгоритма наивным итеративным способом.Но я бы предпочел сделать это более питоническим способом, например, с использованием списочных пониманий или, возможно, библиотеки itertools.
Любой совет, пожалуйста?