python求全排列_python基础教程

Python (1) 2024-06-07 15:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说python求全排列_python基础教程,希望能够帮助你!!!。

所谓全排列,就是给定数组,将所有的可能排列组合都枚举出来,n个元素共有n!种排列组合。

举例,对于['1', '2', '3'],全排列结果为:123,132,213,231,312,321,共有3!=6种。

很直觉的思路就是从数组中依次挑选一个元素作为第1元素,固定第1元素之后,再将剩下的n-1个元素做全排列。

很显然这是递归的思路,还需要确定跳出条件,这里是只剩下1个元素时,自然就到头了。

根据这个思路,代码如下:

from __future__ import print_function

def perm(elem_list, s=''):

# 类型检查

if type(elem_list) != type([]):

return

# 参数合法性检查

if len(elem_list) == 0:

return

# 跳出条件

if len(elem_list) == 1:

# 打印当前结果

print(s+elem_list[0])

return

# 依次挑选一个元素作为第1元素

for i,e in enumerate(elem_list):

# 递归调用自身,同时传入当前的前缀字符串

perm(elem_list[:i] + elem_list[i+1:], s+e)

# 测试用例

perm(['1', '2', '3'])

上述代码的运行结果如下:

123

132

213

231

312

321

python求全排列_python基础教程_https://bianchenghao6.com/blog_Python_第1张

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复