python 編寫排列組合


 

python在編寫排列組合是會用到  itertools 模塊

排列 

import itertools
mylist = list(itertools.permutations(['A','B','C','D'],4))  # 全排列
print(mylist)
mylist1 = list(itertools.permutations(['A','B','C','D'],3))  # 4個里面選3個排列
print(mylist1)

#5!=1*2*3*4*5
#0!=1
#M個選N個   M!/(M-N)!
#4  1    4!/3!=4
#4 2  4!/2!=3*4=12
#4 3  4!/1!=24

組合

import itertools
mylist = list(itertools.combinations(['A','B','C','D'],4))  # 組合
print(mylist)
mylist1 = list(itertools.combinations(['A','B','C','D'],3))  # 4個里面選3個組合
print(mylist1)

#['A','B','C','D'],3) 4個取3個,無序
#M!/N!(M-N)!

可以重復的排序(類似密碼)

import itertools
# product 可以重復的排序
# mylist1 = list(itertools.product("0123456789",repeat=4)) 參數表示可以重復的從前面的0到9里面取出4個數字來
# print(mylist1)
mylist=(["".join(x) for x in itertools.product("0123456789",repeat=4) ])
print(mylist)
print(len(mylist))

利用生成器可以跌代的生產密碼,節約內存

#百度雲,輸入密碼   _  _  _  _
import itertools
# product 可以重復的排序
mylist=("".join(x) for x in itertools.product("0123456789",repeat=4))
print(next(mylist))
print(next(mylist))
print(next(mylist))
print(next(mylist))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM