python版本:Python 3.6.0b3(默认,2016年11月16日,16:55:09)
我有以下输出:
>>> sys.getsizeof([0 for x in range(10**7)])
81528056
>>> sys.getsizeof([0 for x in range(10**8)])
859724472
>>> sys.getsizeof([0 for x in range(10**8+100500)])
859724472
>>> sys.getsizeof([0 for x in range(10**9)])
8058558880
Length of lists:
>>> len([0 for x in range(10**8)])
100000000
>>> len([0 for x in range(10**8+100500)])
100100500
>>>
为什么我对 len 的列表有相同的 getsizeof
输出:
10**8
和 10**8+100500
?
最佳答案
当 list is resized越大,其长度增加a bit more than 1/8 of the requested length 。 100500 远小于 10**8 的 1/8,这意味着列表可能不需要调整之前的大小来适应新条目。
关于python - 为什么 sys.getsizeof 对于非常大的列表返回相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41010652/