列表[1]与[1,1]哪个占用内存更多?原因解析
Python列表内存占用对比:[1] vs [1,1]
- 结论:
b = [1,1]占用的内存空间比a = [1]更大 - 核心原因:
- Python列表本质是动态数组结构,它的内存开销主要包含两部分:列表自身的元数据(比如长度、容量),以及存储元素引用的指针数组。
- 不管列表里的元素是不是指向同一个对象,指针数组都会为每个元素位置分配一个指针空间(64位系统下每个指针占8字节)。
a只有1个指针位置,b有2个,光是这部分就差了8字节。 - 至于
b里两个1指向同一个内存地址,这只是Python对小整数的复用机制(小整数池),这个1的内存只占用一次,不会因为被列表多次引用而重复计算,但这并不影响列表本身需要为两个引用位置分配内存。
- 疑问拆解:你看到
id(b[0]) == id(b[1])是对的,但这只说明两个元素指向同一个对象,而列表的内存开销是自身的结构(存引用的数组)带来的,和元素对象是否复用无关。
内容的提问来源于stack exchange,提问作者invalid syntax
相关产品推荐
相关产品推荐

