【发布时间】:2021-12-02 15:26:36
【问题描述】:
我正在尝试创建所有可能的单词音节组合。
例如,我有一个单词overflowing,我有一个它的音节列表['o', 'ver', 'flow', 'ing']。我希望输出显示组合音节以构成单词的所有可能组合:[('o', 'ver', 'flow', 'ing'), ('o', 'verflow', 'ing'), ('o', 'verflowing'), ('overflowing'), ('over', 'flow', 'ing'), ...]。
这是我的尝试:
syllable_list = ['o', 'ver', 'flow', 'ing']
list_length = len(syllable_list)
for x in range(0, list_length):
for y in range(0, list_length):
if syllable_list[y:x+1]:
before = ""
middle = ""
after = ""
if syllable_list[0:y]:
before = ["".join(syllable_list[0:y])]
if syllable_list[x+1:]:
after = ["".join(syllable_list[x+1:])]
middle = ["".join(syllable_list[y:x+1])]
print(before, middle, after)
输出是:
['o'] ['verflowing']
['over'] ['flowing']
['o'] ['ver'] ['flowing']
['overflow'] ['ing']
['o'] ['verflow'] ['ing']
['over'] ['flow'] ['ing']
['overflowing']
['o'] ['verflowing']
['over'] ['flowing']
['overflow'] ['ing']
所有组合都在那里,有一些重复,我错过了['o', 'ver', 'flow', 'ing'] 案例。我究竟做错了什么?是否有一个库已经处理了这个问题,所以我不必重新创建轮子?
【问题讨论】:
-
实际上,
('o', 'verflowing')之类的值是什么? -
您查看过
itertools.permutations函数吗?这可能会为您指明正确的方向:docs.python.org/3/library/itertools.html#itertools.permutations
标签: python combinations