回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在做一些分词实验,如下所示。在</p>
<p><code>lst</code>是一个字符序列,<code>output</code>是所有可能的单词。在</p>
<pre><code>lst = ['a', 'b', 'c', 'd']
def foo(lst):
...
return output
output = [['a', 'b', 'c', 'd'],
['ab', 'c', 'd'],
['a', 'bc', 'd'],
['a', 'b', 'cd'],
['ab', 'cd'],
['abc', 'd'],
['a', 'bcd'],
['abcd']]
</code></pre>
<p>我检查了<code>combinations</code>和{<cd4>}在<code>itertools</code>库中,<br/>
也尝试了<a href="https://pypi.python.org/pypi/combinatorics/1.4.3" rel="nofollow">combinatorics</a>。<br/>
然而,似乎我看错了方向,因为这不是纯粹的排列组合。。。在</p>
<p>似乎我可以通过使用很多循环来实现这一点,但是效率可能很低。在</p>
<p><strong>编辑</strong></p>
<p>词序很重要,所以像<code>['ba', 'dc']</code>或{<cd7>}这样的组合是无效的。在</p>
<p>顺序应该总是从左到右。</em></p>
<p><strong>编辑</strong></p>
<p>@Stuart的解决方案在python2.7.6中不起作用</p>
<p><strong>编辑</strong></p>
<p>@Stuart的解决方案在python2.7.6中确实有效,请参见下面的注释。在</p>