找到所有元音替换的组合

2024-06-16 11:11:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一个单词中所有元音的所有可能的组合。比如说“你好”:

[halla, halle, halli, hallo, hallu, hella, halle, halli, hallo, hallu...]

我已经写了下面的函数,它只取每个元音,在每个元音处,它将用元音替换所有的元音,并将每个版本添加到一个列表中。我想把它改成我想要的排列,但没用。我尝试在append之后插入元音(“.”join(string),arr),但这会导致无限递归。在

def vowels(word, arr=None):
    if arr is None:
        a = []

    for i, c in enumerate(word):
        if c in 'aeiou':
            for v in 'aeiou':
                string = list(word)
                string[i] = v
                arr.append("".join(string))
    return arr

有人有什么建议吗?在


Tags: innoneforstringifwordjoinarr
1条回答
网友
1楼 · 发布于 2024-06-16 11:11:47

一旦修复了上面提到的打字错误,函数将返回:

['hallo', 'hello', 'hillo', 'hollo', 'hullo', 'hella', 'helle', 'helli', 'hello', 'hellu']

。。。所以它返回一些可能的组合,但不是全部。在

这是因为它将单词中的每个元音依次替换为每个元音,然后转到单词中的下一个元音—但是不是考虑到它在碰到后面的元音时发现的前一个元音。这里有一个递归的解决方案,适用于任何数量的元音单词:

^{pr2}$

相关问题 更多 >