You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何元素相同、创建方式不同的两个列表sys.getsizeof结果不同?

为何元素数量相同的列表占用内存不同?

这是因为Python列表作为动态数组,会预分配额外的内存空间以优化后续添加元素的性能,而不同的列表创建方式触发的预分配策略存在差异:

  • list(range(1, 10))的创建逻辑:
    range对象是已知准确长度的可迭代对象,list构造函数会先获取其长度,然后初始化一个仅预分配少量额外空间的列表。在你的Python 3.10.5环境中,9个元素的列表预分配了11个元素槽,总内存计算为:基础列表对象大小(40字节) + 11个元素指针(每个8字节),即40 + 11*8 = 128字节。

  • 字面量[1,2,...,9]的创建逻辑:
    解释器处理列表字面量时,会采用更激进的预分配策略,为后续可能的修改预留更多空间。在你的环境中,9个元素的字面量列表预分配了14个元素槽,总内存为:40 +14*8=152字节。

这种差异是Python为了适配不同使用场景的性能优化设计,属于正常现象,不影响列表的功能。

内容的提问来源于stack exchange,提问作者Kartik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:01:19