簡體   English   中英

為什么列表和緊湊數組中的int大小相同? (24bytes)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM