python - a = [0] 和 a = [i for i in range(1)] 之间的 sizeof 差异

标签 python object memory memory-management sizeof

我创建了两个单独的列表 ab以两种不同的方式使用相同的元素。为什么两个列表的大小存在差异?

import sys
a = [0]
print(a)
>>> [0]
print(sys.getsizeof(a))
>>> 72

b = [i for i in range(1)]
print(b)
>>> [0]
print(sys.getsizeof(b))
>>> 96

最佳答案

当解释器看到a = [0]时,它知道它可以构建一个只有一个元素的列表。

当它执行列表理解时,它首先创建一个空列表,然后添加项目。它事先并不知道列表有多大,即使它正在迭代像 range(1) 这样简单的东西。因此它会尝试猜测要分配多少内存,如果发现不够,则必须动态增加内存分配。这并不便宜,所以可以从一个慷慨的猜测开始。

关于python - a = [0] 和 a = [i for i in range(1)] 之间的 sizeof 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760237/

相关文章:

php - 具有三个for循环的php中的内存泄漏

python - App Engine 实例内存不断增加

python - 如何使用虚拟环境突出啤酒亮点

python - 抓取亚马逊卖家中心

python - 使用 cv2.VideoWriter 编写视频

python - 是否可以在运行时替换 Python 函数/方法装饰器?

arrays - 如何在 Swift 3 中搜索对象数组

python - 如何动态生成属性?

objective-c:依赖dealloc

javascript - 在 V8 中,为什么预分配数组消耗更少的内存?