python 編寫排列組合
阿新 • • 發佈:2019-05-03
eat 無序 排序 import 個數 .com repeat int product
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) forx in itertools.product("0123456789",repeat=4)) print(next(mylist)) print(next(mylist)) print(next(mylist)) print(next(mylist))
python 編寫排列組合