2016-07-06 150 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

试过了,工作..谢谢。 –