Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么sys.getsizeof为非常大的列表返回相同的输出_Python_Python 3.x_Memory - Fatal编程技术网

Python 为什么sys.getsizeof为非常大的列表返回相同的输出

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

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
>>>
为什么对于以下列表,我有相同的
getsizeof
输出:
10**8
10**8+100500

。100500远小于10**8的1/8,这意味着列表可能不需要从以前的调整大小调整大小以适应新条目。

sys.getsizeof以字节为单位显示大小。您的[0代表范围内的x(10**8…])列表都可以显示为859724472字节。

但为什么要调整其大小?每行创建一个新的列表,因为列表理解一次从
范围
对象中提取一个条目,这导致确定性行为。我尝试在不同的终端中运行这两个命令,结果是相同的。是的,这就是“确定性”的意思。明白了!非常感谢。