计算字符串的所有排列组合的Python程序

2022-05-03 00:00:00 字符串 计算 排列组合

在这个例子中,你将学习如何计算字符串的所有排列组合。

排列法是以不同的方式从一个集合中选择元素的方法。

例如:从yup中选择字符的方式有yup, ypu, uyp, upy, puy, pyu,以及不选择任何字符。

我们将在下面的例子中进行同样的操作。

例1:使用递归

def get_permutation(string, i=0):

    if i == len(string):
        print("".join(string))

    for j in range(i, len(string)):
        words = [c for c in string]
        # 换一换
        words[i], words[j] = words[j], words[i]
        get_permutation(words, i + 1)

print(get_permutation('yup'))

输出

yup
ypu
uyp
upy
puy
pyu
None

在这个例子中,递归被用来寻找一个字符串yup的排列组合。

如果参数yub的长度与之相等,则if条件会打印作为参数的字符串。
在for循环的每次迭代中,yup的每个字符都被存储在单词中。
词的元素被交换。通过这种方式,我们实现了所有不同的字符组合。
这个过程一直持续到达到最大长度。
例2:使用itertools

from itertools import permutations

words = [''.join(p) for p in permutations('pro') ]

print(words)

输出

['pro', 'por', 'rpo', 'rop', 'opp', 'orp'] 

使用itertools模块的permutations,我们可以找到一个字符串的permutations。

相关文章