Python列表的内存存储

6
我了解Python列表本质上是C数组,它们分配一块特定的连续内存块; 但是,这些内存块实际存储列表中的数据还是仅指向存储实际数据的另一个内存位置呢?也许这取决于存储在列表中对象的大小。因为你可以轻松地按顺序存储一系列整数,但如果要动态存储包括自定义对象在内的各种对象,则会更难。

请查看此文档,主要是参考资料,https://docs.python.org/2/faq/design.html#how-are-lists-implemented - gout
1
不是的。它们是指向Py_Object指针的C数组。 - juanpa.arrivillaga
3
这里有一个相当不错的解释。 - juanpa.arrivillaga
1
此外,在Python中,您实际上无法顺序存储具有可变大小的int对象列表。因此,请检查sys.getsizeof(0),然后是sys.getsizeof(1),最后是sys.getsizeof(10000000000000000) - juanpa.arrivillaga
2个回答

3
不,Python列表存储对象的引用(“指针”)。

性能注意事项 #

列表对象由两部分组成:一个对象头和一个单独分配的对象引用数组。后者根据需要重新分配。


非常合乎逻辑的决定。这是我在没有看到任何文件明确说明的情况下所假设的。 - 0TTT0

1

Python中空列表的大小为20。 - Mohaqiq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接