跳到主要内容

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

要理解这个示例,你需要了解以下Python编程主题的知识:

排列是指以不同方式从一组元素中选择元素的方法。

例如:从yup中选择字符的方式有yupypuuypupypuypyu,以及不选择任何字符。

我们将在以下示例中执行相同的操作。

示例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的排列。

  • 如果传入的stringyub的长度相等,则if条件打印string
  • 在for循环的每次迭代中,yup的每个字符都存储在words中。
  • words的元素被交换。通过这种方式,我们实现了字符的所有不同组合。
  • 这个过程一直持续到达到最大长度。

示例2:使用itertools

from itertools import permutations

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

print(words)

输出

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

使用itertools模块中的排列,我们可以找出字符串的排列。