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

要理解这个例子,你应该具备以下 Python 编程 主题的知识


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

例如:从 `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]
   
        # swap
        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` 的排列。

  • 如果 `string` 参数的长度等于 `yub` 的长度,则 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` 模块中的排列,我们可以找到字符串的排列。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战