我正在尝试创建一个密码列表,其中包含以下格式的所有组合:
3 个字符 2 个数字 3 个字符
例子: aaa00aaa
bbb11bbb
我创建了一个代码,它使用较小的字符数组执行此操作,但是当我尝试使用 ASCII 系统中的所有字符时,代码会出现内存错误。
import string
numbers = ["0","1","2","3","4","5","6","7","8","9"]
characters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
characterCombs = []
numbCombs = []
allCombs = []
for el1 in characters:
for el2 in characters:
for el3 in characters:
characterCombs.append(el1+el2+el3)
for n1 in numbers:
for n2 in numbers:
numbCombs.append(n1 + n2)
for ch1 in characterCombs:
for no in numbCombs:
for ch2 in characterCombs:
allCombs.append(ch1+no+ch2)
for i in allCombs:
f.write(i+"\n")
f.close()
有没有办法优化这段代码,或者我应该改变我的方法并找到不同的方法来组合所有这些字符?
您可以使用 pythonitertools
模块生成组合。
from itertools import permutations
numbers = ["0","1","2","3","4","5","6","7","8","9"]
characters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
for a in permutations(characters, 3):
for b in permutations(numbers, 2):
for c in permutations(characters, 3):
print("".join(a + b + c))
虽然这将花费相当多的时间......
此外,您不需要保留所有生成的密码的列表。您可以在生成密码时将密码写入 for 循环内的文件中。
编辑:
正如@Andreas 在下面提到的,它确实应该是所有的排列(不是组合)。我更新了代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句