python - 为什么 sys.getsizeof 对于非常大的列表返回相同的输出

标签 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)])
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**810**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/

相关文章:

android - 处理 android 和 django 时使用什么日期格式?

python - Ubuntu 'Failed to import the site module' 错误信息

python - 使用 4300 万行文本文件中的计数创建字典的更简单方法是什么?

python 3.4 :ImportError: no module named win32api

android - 由于 20 天以上的 fragment 化导致内存不足错误 android

c - C中的字符串和指针

python - 是否存在生成器装饰器?

python - QWebView 布局不正确

python - 如何将包含嵌套数组的压缩对象展平到列表中?

c++ - 如何使用条件表达式返回对象指针?