python生成全排列数
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
#coding:utf-8 #全排列发生器 #http://www.75271.com/codes/ def a(n): li=[] for i in range(1,n+1): li.append(i) return li def c(i,li_a): li=[] for j in li_a: if j!=i: li.append(j) return li def form(i,li_c,one): li=[] li.append(i) count=0 for i in one: count=count+1 li.insert(count,li_c[i-1]) return li def fun(n): if n==2: return [[1,2],[2,1]] else: back=[]#返回集合 li_a=a(n) for i in li_a:#依次取li_a中的每一个 li_c=c(i,li_a)#生成li_a中除去i的补集 for one in fun(n-1):#取下一级的所有排列序 #li=函数(第一位i,补集li_c,序数列表one) li=form(i,li_c,one) back.append(li) return back li=fun(5) ##dic={1:"圣",2:"诞",3:"节",4:"快乐"} ##for li_in in li: ## word="" ## for i in li_in: ## word=dic[i]+word ## word="预祝大家:"+word ## print word count=1 for i in li: print str(count)+":"+str(i) count=count+1