为什么列表和紧凑数组中的int值尺寸相同?(24字节)

2024-10-03 02:45:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚读到一个定义为“I”的compactArray应该生成一个包含2个或4个字节的整数的数组,但是执行这个代码片段我仍然得到24个字节,这与我使用整数列表相同。在

import array
import sys
lowLevelArray = array.array("i", [1,2,3])
print sys.getsizeof(lowLevelArray[0])
pythonList = [1,2,3]
print sys.getsizeof(pythonList[0])

输出:

24

24


Tags: 代码import列表字节定义sys整数数组
2条回答

array object更节省空间;它的每int包含4个字节,加上56个字节的开销:

>>> sys.getsizeof(array.array("i", [1,2,3])
68L
>>> sys.getsizeof(array.array("i", range(1000))
4056L

但是,当你这么做的时候

^{pr2}$

它首先计算lowLevelArray[0],它当然返回一个普通整数,然后显示使用的大小。这与您也有一个恰好保存相同值的数组完全无关。在

因为一旦检索到整数,就必须将其包装在python对象中,这样才能使用它。python中的一切都是一个对象,它没有原语的概念(即使底层实现使用它们)。在

相关问题 更多 >