1. 程式人生 > 程式設計 >如何通過python實現全排列

如何通過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:
    print 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)
      #呼叫結束之後還需要回溯將交換位置的元素還原,以供其他下降路徑使用(二叉樹)
      lis[num],lis[num]

lis = [1,2,3,4]
perm(lis,len(lis))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。