Python 为什么sys.getsizeof为非常大的列表返回相同的输出
python版本:python 3.6.0b3(默认,2016年11月16日,16:55:09) 我有以下输出:Python 为什么sys.getsizeof为非常大的列表返回相同的输出,python,python-3.x,memory,Python,Python 3.x,Memory,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)]) 85972
>>> 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
>>>
为什么对于以下列表,我有相同的getsizeof
输出:
10**8
和10**8+100500
?。100500远小于10**8的1/8,这意味着列表可能不需要从以前的调整大小调整大小以适应新条目。sys.getsizeof以字节为单位显示大小。您的[0代表范围内的x(10**8…])列表都可以显示为859724472字节。但为什么要调整其大小?每行创建一个新的列表,因为列表理解一次从范围对象中提取一个条目,这导致确定性行为。我尝试在不同的终端中运行这两个命令,结果是相同的。是的,这就是“确定性”的意思。明白了!非常感谢。