Генерация списка всевозможных строк с добавлением точки

У меня есть строка, например 'abcd'. Мне нужно сгенерировать всевозможные вариации этой строки с добавлением точки, например:

'a.bcd'
'ab.cd'
'abc.d'
...
'a.b.cd'
'a.b.c.d'
'a.b.c.d.'

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

Автор решения: Andy Pavlov

Можно скомбинировать список из строки abcd со списком из ['','.']. Из строк abcd делаем список ['','a','b','c','d']. С помощью itertools.product() делаем все возможные расположения под список символов из списка ['','.']. Потом суммируем через zip().

import itertools

text = 'abcd'
symbols = ['', *list(text)]
filler = ['','.']  # Список для создания комбинаций расположения пустого места и точки
combine = [list(zip(symbols, r)) for r in list(itertools.product(filler, repeat=len(symbols)))]
print(*[''.join([c for item in row for c in item]) for row in combine], sep='\n')

Вывод

abcd
abcd.
abc.d
abc.d.
ab.cd
ab.cd.
...
.a.b.c.d
.a.b.c.d.
→ Ссылка