有趣的小案例,如何在python中生成所有可能的字串?
阿新 • • 發佈:2019-01-14
我的目標是能夠生成長度為x的所有可能的字串(字母和數字),並且能夠啟用每個字串的程式碼塊. (像迭代器一樣)唯一的問題是itertools中的那些不會在同一個字串中複製字母.例如:
我得到“ABC”“BAC”“CAB”等而不是“AAA”.
有什麼建議?
使用 itertools.product()
:
>>> import itertools >>> map(''.join, itertools.product('ABC', repeat=3)) ['AAA', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC', 'BAA', 'BAB', 'BAC', 'BBA', 'BBB', 'BBC', 'BCA', 'BCB', 'BCC', 'CAA', 'CAB', 'CAC', 'CBA', 'CBB', 'CBC', 'CCA', 'CCB', 'CCC']
請注意,建立包含所有組合的列表對於較長的字串來說效率非常低 – 而不是迭代它們:
for string in itertools.imap(''.join, itertools.product('ABC', repeat=3)): print string
要獲取所有字元和數字,請使用string.uppercase string.lowercase string.digits.