gpt4 book ai didi

python - 如何在 Python 中使用 for 循环从 0 迭代到 sys.maxint

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:25 25 4
gpt4 key购买 nike

我正在尝试从 0 迭代到 sys.maxint 但出现“MemoryError”。我应该怎么做?

这是简单的代码片段。

for i in range(sys.maxint):
a = 1

错误:回溯(最后一次调用): 文件“”,第 1 行,位于内存错误

最佳答案

在 Python 2 中,range 关键字构造一个列表,其中包含您指定范围内的所有数字。所以如果你想创建一个最大 2**31-1 的范围,它必须为 4*(2**31-1) 字节分配空间(大约8.5 GB)。您可能没有那么多内存。

2**31-1 假定您使用的是 32 位 python。对于 64 位 python,maxint 是 2**63-1。您绝对没有那么多 ram(8*(2**63-1) = 大约 7300 万 Tb)。

如果你想在 Python 2 中遍历一组数字并且不想提前构建这些数字的完整列表(从而使用那么多 ram),你可以使用 xrange 而不是 range。语义相同,但它返回惰性迭代器而不是列表。

即使你确实使用了xrange,它仍然需要很长时间才能计数到2**63-1,但这是一个不同的问题,可能无关紧要如果您计划早于此打破 for 循环。请在应用程序开发期间注意这一点。

最后注意,在 Python 3 中,xrange 没有了,range 是构造惰性迭代器的函数。要在 Python 2 中获得与 range 等效的内容,您可以执行 list(range(v))

关于python - 如何在 Python 中使用 for 循环从 0 迭代到 sys.maxint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com