将一个单词拆分为所有可能的'子词' - 所有可能的组合

时间:2017-04-05 22:37:47

标签: python

我试图将一个单词分成子词 - 所有可能的排列。

Input: Bang
Output: [['B','ang'], ['Ba','ng'], ['Ban','g'], ['B','a','ng'], ['B','an','g'], ['Ba','n','g'], ['B','a','n','g']]

我希望我能够涵盖所有可能的方式来安排' Bang'。我想了很久但却找不到办法。

list(permutations('Bang', 3))

Permutations方法不返回整个单词。我可以分成2个单词,但无法将单词分成3个或更多(对于更大的单词)。

可以使用以下代码完成分成2个单词,其中一个成员建议使用。

[ [word[:i],word[i:]] for i in range(1,len(word))]

1 个答案:

答案 0 :(得分:2)

这里你去..

def combos(s):
  if not s:
    return
  yield (s,)
  for i in range(1, len(s)):
    for c in combos(s[i:]):
      yield (s[:i],) + c

for c in combos('Bang'):
  print c

输出:

('Bang',)
('B', 'ang')
('B', 'a', 'ng')
('B', 'a', 'n', 'g')
('B', 'an', 'g')
('Ba', 'ng')
('Ba', 'n', 'g')
('Ban', 'g')