如何在列表中存储大量值?

时间:2019-07-01 02:35:57

标签: python python-3.x

在Codechef竞赛的第二天,我使用范围函数创建了一个列表。 my_list = list(range(n)) 其中n10**18一样大。 它使Codechef出现NZEC错误。因此,为了知道可能是什么问题,我尝试使用创建带有10**18元素的列表 my_list = list(range(10**18)) 但它给了内存错误。

那么,我该如何应对这种情况?

2 个答案:

答案 0 :(得分:3)

MemoryError表示您的计算机内存不足。考虑到您要创建的列表有多大,这并不奇怪。

如果一个整数仅占用4个字节(就像在C中一样,Python整数要大得多且大小可变)10**18整数将需要大约一百万兆字节的RAM。

您为什么期望能够创建如此庞大的清单?如果您认为需要这样的对象来解决编程问题,则内存不足的事实可能表明可以找到一种更聪明的算法,不需要几乎足够的空间。

答案 1 :(得分:1)

您可以尝试使用迭代器:

<div class="wrapper">text</div>

如果查看输出,则rn和it是不将所有值存储在内存中的对象,仅是产生它们所需的信息。另一方面,列表将所有值存储在内存中。