失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python全排列算法_Python实现全排列算法

python全排列算法_Python实现全排列算法

时间:2021-04-25 11:07:12

相关推荐

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实现全排列算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。