python - 生成密码列表时出现内存错误

标签 python algorithm out-of-memory python-itertools cartesian-product

我试图生成所有可能的密码,长度在 1-5 个字符之间,其中可能的字符是小写字母、大写字母和 10 位数字。

为了简单起见,我将可能的字符限制为小写字母和十位数字,密码长度限制为 3-5 个字符。

import itertools
charMix = list("abcdefghijklmnopqrstuvwxyz1234567890")
mix = []
for length in range(3, 6):
   temp = [''.join(p) for p in itertools.product(charMix, repeat=length)]
   mix.append(temp)

但是,我在 temp 赋值行遇到内存错误,不知道如何克服这些错误:(

有没有办法在没有内存错误的情况下生成这些密码?

最佳答案

由于您实际上提到了术语生成,如果可以满足您的用例,请在此处考虑一个 generator:

from typing import Generator
import itertools

def make_pws(join="".join) -> Generator[str, None, None]:
    charMix = "abcdefghijklmnopqrstuvwxyz1234567890"
    for length in range(3, 6):
       for p in itertools.product(charMix, repeat=length):
           yield join(p)

您可以像序列一样遍历此结果,而无需将整个内容放在内存中:

>>> pws = make_pws()
>>> next(pws)
'aaa'
>>> next(pws)
'aab'
>>> next(pws)
'aac'
>>> next(pws)
'aad'
>>> for pw in make_pws():
...     # process each one at a time

关于python - 生成密码列表时出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098930/

相关文章:

python - 如何自动点击 "Content"按钮

java - 使用 Jersey 发送大型 JAXB 对象会生成 OutOfMemoryError

python - Airflow UI 中 'schedule' 列的颜色是什么意思?

python - 我应该在 python 中输入什么样的编码声明

关于遍历二叉树的C++设计题

algorithm - 寻找可能是 Dijkstra 的算法

c# - 返回在其他 List<string> 中仅出现一次的元素 List<string> 的微观优化和最优雅的方式是什么

python - 如何销毁 Python 对象并释放内存

memory-management - 4GB 进程如何在仅 2GB RAM 上运行?

javascript - 在django View 中渲染url变量