1. 程式人生 > >有趣的小案例,如何在python中生成所有可能的字串?

有趣的小案例,如何在python中生成所有可能的字串?

有趣的小案例,如何在python中生成所有可能的字串?

 

我的目標是能夠生成長度為x的所有可能的字串(字母和數字),並且能夠啟用每個字串的程式碼塊. (像迭代器一樣)唯一的問題是itertools中的那些不會在同一個字串中複製字母.例如:

我得到“ABC”“BAC”“CAB”等而不是“AAA”.

有什麼建議?

使用 itertools.product()

有趣的小案例,如何在python中生成所有可能的字串?

 

>>> 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.