我需要一个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 ...:'。 –