2015-05-05 13 views
5

Merak ediyorum - neden sys.getsizeof aramasının bir listesi için daha az bir sayı döndürüyor?sys.getsizeof (list), öğelerinin toplamından daha azını döndürür

import sys 
lst = ["abcde", "fghij", "klmno", "pqrst", "uvwxy"] 
print("Element sizes:", [sys.getsizeof(el) for el in lst]) 
print("Sum of sizes: ", sum([sys.getsizeof(el) for el in lst])) 
print("Size of list: ", sys.getsizeof(lst)) 

yukarıdaki baskılar

Element sizes: [42, 42, 42, 42, 42] 
Sum of sizes: 210 
Size of list: 112 

Nasıl oluyor

?

cevap

4

Gerçek liste nesnesinin boyutunu elde edersiniz. Liste nesnesi, işaretleyicileri nesneye kaydederken, bellek boyutunun, öğelerinin toplamından farklı (ve daha düşük) olması gerekir. Benzetme

, bu C

işaretçiler bir dizinin boyutunu almak gibi bir şey
İlgili konular