Может быть немного проще просто создать собственный генератор для создания комбинаций. Это можно сделать очень читабельным способом с помощью рекурсивного генератора, если ваши строки недостаточно гигантские c для работы в пределах стека:
def hyphenCombos(s):
head, _, rest = s.partition('-')
if len(rest) == 0:
yield head
else:
for c in hyphenCombos(rest):
yield f'{head}-{c}'
yield f'{head} {c}'
s = 'sixty-nine-eighty-ninths'
list(hyphenCombos(s))
Результат:
['sixty-nine-eighty-ninths',
'sixty nine-eighty-ninths',
'sixty-nine eighty-ninths',
'sixty nine eighty-ninths',
'sixty-nine-eighty ninths',
'sixty nine-eighty ninths',
'sixty-nine eighty ninths',
'sixty nine eighty ninths']
С этим вы можете использовать его в понимании или передать его другим itertools
функциям, чтобы делать все, что вам нужно:
myList = ['mother-in-law', 'co-operation', 'sixty-nine-eighty-ninths']
chain.from_iterable(hyphenCombos(s) for s in myList))
# or variations...
# [list(hyphenCombos(s)) for s in myList]