Ответ Адриана Плиссона показывает, как получить все подпоследовательности заданной длины в Python (для типов данных произвольной последовательности). ОП указывает, что он работает со строками и что он хочет все подпоследовательности. Таким образом, используя itertools.combinations
мы определяем:
>>> from itertools import combinations
>>> def subseq_combos(inp):
... return (''.join(s) for r in range(len(inp) + 1) for s in combinations(inp, r))
...
>>> list(subseq_combos('12345'))
['', '1', '2', '3', '4', '5', '12', '13', '14', '15', '23', '24', '25', '34', '35', '45', '123', '124', '125', '134', '135', '145', '234', '235', '245', '345', '1234', '1235', '1245', '1345', '2345', '12345']
(Если пустая подпоследовательность должна быть опущена, используйте range(1, len(inp) + 1))
.)