2016-07-06 36 views
-5

我需要一個for循環,可以接受一個輸入,例如5,並遍歷大寫/小寫/數字/特殊的所有可能的5個長度組合,然後執行某些操作每一個,這是可能的?我不想將它們存儲在內存中,只是遍歷它們,然後擺脫它。for loop所有可能的字母和數字組合的範圍

此外,我會怎麼做只是每種類型的字符集的.. letters..numbers等..

+0

是的,這是可能的。你有什麼嘗試? – syntonym

+0

我試過這個:'from itertools import product from string import ascii_lowercase keywords = [''.join(i)for i in product(ascii_lowercase,repeat = 3)]''但是隻有小寫字母並且存儲它,當這樣做的長度就像5碼,它變得太大了。 –

+0

您的列表理解'[... for i in ....]'存儲結果,與您的請求相反。你可以創建一個生成器表達式'(... for i in ...)',或者一個循環'for i in ...:'。 –

回答

1

我需要一個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 
+0

就是這樣,謝謝..但是有沒有什麼辦法將string.letters分割爲下或上?我可以用ascii_lowercase和ascii_uppercase替換它嗎? –

+0

試過了,工作..謝謝。 –