Vedo alcune incongruenze quando si utilizza sys.getsizeof
in quelli che dovrebbero essere elenchi identici. (Python 2.7.5)Perché la creazione di un elenco da un elenco lo rende più grande?
>>> lst = [0,1,2,3,4,5,6,7,8,9]
>>> sys.getsizeof(lst)
76
>>> lst2 = list(lst)
>>> sys.getsizeof(lst2)
104
>>> lst3 = list(lst2)
>>> sys.getsizeof(lst3)
104
>>> sys.getsizeof(lst[:])
76
>>> sys.getsizeof(lst2[:])
76
Qualcuno ha una spiegazione semplice?
Ho un'ipotesi, supportata da nessuna evidenza: le liste allocano memoria extra prima del tempo, in modo che le future operazioni 'append' abbiano ammortizzato la complessità O (1). Forse la differenza di dimensioni è dovuta a diverse quantità di memoria allocata aggiuntiva. – Kevin
@Kevin, probabilmente sei corretto usando 'lst2 = lst [:]' restituisce la stessa dimensione –