【发布时间】:2016-10-02 14:53:06
【问题描述】:
在应该相同的列表上使用sys.getsizeof 时,我发现有些不一致。 (Python 2.7.5)
>>> 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
有人有简单的解释吗?
【问题讨论】:
-
我有一个猜测,没有任何证据支持:列表提前分配了额外的内存,因此未来的
append操作已经摊销了 O(1) 复杂性。也许大小的差异是因为额外分配的内存量不同。 -
@Kevin,你可能是正确的,因为使用
lst2 = lst[:]返回相同的大小
标签: python list python-internals