以下是我要看的内容:
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个字节)对象,我知道为什么该对象可能非常大,但不是列表只是一个集合这些物体?显然它不是,这里发生了什么?
答案 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字节的开销。