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
?
答案 0 :(得分:3)
当list is resized长度增加a bit more than 1/8 of the requested length时。 100500远小于10 ** 8的1/8,这意味着该列表可能不需要从之前的调整大小调整大小以适应新条目。
答案 1 :(得分:0)
sys.getsizeof以字节显示大小。您的[0 for x in range(10 ** 8 ...)]的列表都可以用859724472字节显示。