猿问

大列表初始化无提示地失败

我正在尝试初始化一个任意的长列表,但是我这样做的方式却默默地失败了。代码:

a_long_list = [True] * (1000000011)

我尝试尝试/捕获异常但没有成功。理想情况下,如果初始化成功就好了,但最重要的是检测初始化是否失败。环境:我使用的是 python 3.8.5,不幸的是 numpy 在这个环境中不可用我也尝试了数组,但没有成功(也默默地失败了)。

a_long_list = array.array('b', (1,)*1000000011)


芜湖不芜
浏览 99回答 1
1回答

婷婷同学_

您尝试使用的方法array.array是首先创建tuple与您的内存使用量相当的内存使用量list,因此峰值内存使用量仍然太高。array乘以由 Short 组成的Short tuple,而不是tuple:a_long_list = array.array('b', (1,)) * 1000000011array.array然后将有效地生成更长的数组,完全使用内存高效的 C 级类型(每个元素仅占用一个字节,而不是指针,通常每个元素 4-8 个字节;如果您随后开始分配范围之外的值,则更多小int缓存),没有您不使用的巨大临时缓存。
随时随地看视频慕课网APP

相关分类

Python
我要回答