为什么是单个int 24个字节,但在列表中它往往是8个字节

时间:2015-06-19 20:42:11

标签: python

以下是我要看的内容:

In [1]: import sys

In [2]: sys.getsizeof(45)
Out[2]: 24

In [3]: sys.getsizeof([])
Out[3]: 72

In [4]: sys.getsizeof(range(1000))
Out[4]: 8072

我知道Python中的int可以在堆上生长(可以变大24个字节)对象,我知道为什么该对象可能非常大,但不是列表只是一个集合这些物体?显然它不是,这里发生了什么?

3 个答案:

答案 0 :(得分:8)

这是对象的大小 - excluding the objects it contains

8072

在您的情况下,包含1000个元素的列表的大小为24个字节,但每个整数对象仍为// Currencies var price: Double = 3.20 println("price: \(price)") let numberFormater = NSNumberFormatter() numberFormater.locale = locale numberFormater.numberStyle = NSNumberFormatterStyle.CurrencyStyle numberFormater.maximumFractionDigits = 2 个字节。列表对象跟踪这些整数对象,但它们不包含在列表对象的大小中。

答案 1 :(得分:7)

该列表不包含任何整数;它包含指向各种对象的指针,这些对象恰好是整数,并存储在其他地方。 getsizeof()告诉您传递给它的对象的大小,而不是它指向的任何其他对象的大小。

答案 2 :(得分:1)

list是对象的指针的集合,而不是对象本身的集合。因此,假设一个64位系统,你的列表有8000字节的指针加上72字节的开销。