我正在进行一些词语分割实验,类似于以下内容。
我已经检查了itertools库中的排列和组合,还尝试了combinatorics。但是,似乎我看错了,因为这不是纯排列和组合... 似乎我可以通过使用许多循环来实现这一点,但效率可能很低。
编辑
单词顺序很重要,因此像['ba','dc']或['cd','ab']这样的组合是无效的。
顺序应始终从左到右。
编辑
@Stuart的解决方案在Python 2.7.6中无法工作。
编辑
@Stuart的解决方案在Python 2.7.6中有效,请参见下面的评论。
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']]
我已经检查了itertools库中的排列和组合,还尝试了combinatorics。但是,似乎我看错了,因为这不是纯排列和组合... 似乎我可以通过使用许多循环来实现这一点,但效率可能很低。
编辑
单词顺序很重要,因此像['ba','dc']或['cd','ab']这样的组合是无效的。
顺序应始终从左到右。
编辑
@Stuart的解决方案在Python 2.7.6中无法工作。
编辑
@Stuart的解决方案在Python 2.7.6中有效,请参见下面的评论。