排列是从集合中以不同方式选择元素的方法。
例如:从 `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` 模块中的排列,我们可以找到字符串的排列。