我需要一個for循環,可以接受一個輸入,例如5,並遍歷大寫/小寫/數字/特殊的所有可能的5個長度組合,然後執行某些操作每一個,這是可能的?我不想將它們存儲在內存中,只是遍歷它們,然後擺脫它。for loop所有可能的字母和數字組合的範圍
此外,我會怎麼做只是每種類型的字符集的.. letters..numbers等..
我需要一個for循環,可以接受一個輸入,例如5,並遍歷大寫/小寫/數字/特殊的所有可能的5個長度組合,然後執行某些操作每一個,這是可能的?我不想將它們存儲在內存中,只是遍歷它們,然後擺脫它。for loop所有可能的字母和數字組合的範圍
此外,我會怎麼做只是每種類型的字符集的.. letters..numbers等..
我需要一個for循環,可以採取輸入,說5,並遍歷所有可能的大/小寫/數字/特價長度爲5點的組合,做一些與每一個
爲此,您可能需要使用itertools.product()
import string
import itertools
alphabet = string.digits + string.letters + string.punctuation
for password in itertools.product(alphabet, repeat=5):
print ''.join(password)
或者,修改您的評論中的代碼:
from string import ascii_lowercase
from itertools import product
keywords = (''.join(i) for i in product(ascii_lowercase, repeat = 3))
for keyword in keywords:
print keyword
就是這樣,謝謝..但是有沒有什麼辦法將string.letters分割爲下或上?我可以用ascii_lowercase和ascii_uppercase替換它嗎? –
試過了,工作..謝謝。 –
是的,這是可能的。你有什麼嘗試? – syntonym
我試過這個:'from itertools import product from string import ascii_lowercase keywords = [''.join(i)for i in product(ascii_lowercase,repeat = 3)]''但是隻有小寫字母並且存儲它,當這樣做的長度就像5碼,它變得太大了。 –
您的列表理解'[... for i in ....]'存儲結果,與您的請求相反。你可以創建一個生成器表達式'(... for i in ...)',或者一個循環'for i in ...:'。 –