Как вернуть подпоследовательность переданной строки при помощи функции - генератора в python

я пытаюсь описать подобным способом

def all_variants(text):
    for j in text:
        yield j


a = all_variants("abc")
for i in a:
    print(i)

в моем решении просто выходит a b c, а нужно:

a
b
c
ab
bc
ABC

Ответы (1 шт):

Автор решения: MBo

У вас в примере подстроки (непрерывные куски), а не подпоследовательности. Для подстрок:

def all_variants(text):
    for l in range(len(text)):
        for r in range(l,len(text)):
            yield text[l:r+1]

или так, в том порядке, который у вас использован:

def all_variants(text):
    for size in range(len(text)):
        for l in range(len(text)-size):
            yield text[l:l+size+1]
→ Ссылка