擅长:python、mysql、java
<p>只需制作自己的生成器来生成组合,可能会更容易一些。这可以通过递归生成器以非常可读的方式完成,只要字符串不足以运行到堆栈限制:</p>
<pre><code>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))
</code></pre>
<p>结果:</p>
<pre><code>['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']
</code></pre>
<p>有了它,您可以在理解中使用它,或者将它传递给其他<code>itertools</code>函数来执行您需要的任何操作:</p>
<pre><code>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]
</code></pre>