при использовании itertools
может быть быстрее, чем при использовании вложенных циклов.
Код
from itertools import chain, combinations
def sublist(ls):
chain_obj = chain.from_iterable(combinations(ls, r) for r in range(1,len(ls)+1))
for i in chain_obj:
print(i)
ls=['1','2','3']
sublist(ls)
Вывод
('1',)
('2',)
('3',)
('1', '2')
('1', '3')
('2', '3')
('1', '2', '3')
РЕДАКТИРОВАТЬ 1
Надеюсь, это поможет,
from itertools import combinations
def sublist(ls):
res = [ls[x:y] for x, y in combinations( range(len(ls) + 1), r = 2)]
print(res)
ls=['1','2','3','4']
print(sublist(ls))
Вывод
[['1'], ['1', '2'], ['1', '2', '3'], ['1', '2', '3', '4'], ['2'], ['2', '3'], ['2', '3', '4'], ['3'], ['3', '4'], ['4']]