注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

python生成全排列数

python 水墨上仙 1468次浏览 已收录 手机上查看

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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明python生成全排列数
喜欢 (0)
[开心洋葱]
分享 (0)
关于作者:
水墨上仙
……
加载中……