我正在做一些分词实验,如下所示。
lst
是一个字符序列,并且output
是所有可能的词。
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']]
我查过combinations
and permutations
in itertools
图书馆,
并且也尝试过组合学.
然而,我似乎看错了,因为这不是纯粹的排列组合......
看来我可以通过使用大量循环来实现这一点,但效率可能会很低。
EDIT
词序很重要,所以像这样的组合['ba', 'dc']
or ['cd', 'ab']
无效。
顺序应该始终是从左到右。
EDIT
@Stuart 的解决方案在 Python 2.7.6 中不起作用
EDIT
@Stuart 的解决方案确实适用于 Python 2.7.6,请参阅下面的评论。