如何通过python实现全排列
这篇⽂章主要介绍了如何通过python实现全排列,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下
itertools模块现成的全排列:
for i in itertools.permutations('abcd',4):
print ''.join(i)
相关全排列算法:
def perm(l):
if(len(l)<=1):
return [l]
r=[]
for i in range(len(l)):
s=l[:i]+l[i+1:]
p=perm(s)
for x in p:
r.append(l[i:i+1]+x)
return r
#递归,下降⼆叉树
def perm(lis,begin,end):
#print "调⽤perm函数"
if begin>=end:
二叉树的遍历pythonprint lis
else:
i = begin
for num in range(begin,end):
lis[num],lis[i] = lis[i],lis[num] #固定当前位置,在进⾏下⼀位的排列
#print "-----num:%d,begin:%d"%(num,begin)
perm(lis,begin+1,end)
#print "*****num:%d,begin:%d"%(num,begin)
#调⽤结束之后还需要回溯将交换位置的元素还原,以供其他下降路径使⽤(⼆叉树)
lis[num],lis[i] = lis[i],lis[num]
lis = [1,2,3,4]
perm(lis,0,len(lis))
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。