[英]Why is an int in a list and in an compact array the same size? (24bytes)
我剛剛讀到一個定義為“ i”的compactArray應該產生一個包含2或4個字節的整數的數組,但是執行此代碼段我仍然得到24bytes,這與我將使用整數列表一樣。
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
因為一旦檢索到整數,就必須將其包裝在python對象中,以便可以使用它。 python中的一切都是對象,它沒有基元的概念(即使底層實現使用它們)。
數組對象是更高的空間效率; 它擁有的每個int為4字節,再加上56字節的開銷:
>>> sys.getsizeof(array.array("i", [1,2,3])
68L
>>> sys.getsizeof(array.array("i", range(1000))
4056L
但是,當您這樣做時
>>> sys.getsizeof(lowLevelArray[0])
它首先計算lowLevelArray[0]
這當然返回一個正常整數,然后示出了由所使用的尺寸。 這與您還擁有恰好擁有相同值的數組這一事實完全無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.