python - Python 无列表大小
问题描述
我只是在检查 Python 3 中某些数据类型的大小,我观察到了这一点。
import sys
val = None
print(sys.getsizeof(val))
输出是16
符合预期。
我尝试列出 1000 个位置的列表,None
并且我预计大小会16*1000 = 16000
更大。但我得到的结果不一样。
import sys
val = [None]*1000
print(sys.getsizeof(val))
输出是8064
. 几乎是我预期的一半大小。
这是什么原因。?为什么分配的内存少。?
解决方案
import sys
val = None
print(sys.getsizeof(val))
Answer:
16
val = []
print(sys.getsizeof(val))
Answer:
72
val = [None]
print(sys.getsizeof(val))
Answer:
80
so [None]*1000 = 1000* 8 + 72 = 8072
注意:字节数可能因环境而异
推荐阅读
- javascript - 检查项目是否存在于 Firestore 中,否则保存(数组)
- android - 如何在 android RecyclerView 中检测 OverScroll?
- java - 为什么我将计数值作为计数类的零,我期望它是 20?
- node.js - 为什么测试中的 spyOn 函数不能与 sendGrid 一起使用?
- javascript - webpack 无法正确转换 es6 的问题
- angular - 在 github 页面上部署 Angular 应用程序后,图像未加载
- android - 有没有办法从 UNITY 5.6.6 发布 API 级别 26 的 Android 应用程序?
- forms - 自定义表单约束抛出空指针异常
- ansible - 在 Ansible 中使用处理程序失败时如何处理回滚?
- extjs - ExtJS:在分组组合框 tpl 中动态传递组名