0

语言如何知道为每个元素保留多少空间?或者它是否保留了数据类型所需的最大空间?(谈论大浮点数)。那样的话是不是有点低效?

4

4 回答 4

1

Python 只在列表中保留足够的空间来引用各种对象;当对象被实例化时,由对象的分配器为它们保留足够的空间。

于 2012-12-25T09:00:57.693 回答
1

Python 中的数组是通过array模块完成的。它们不存储不同的数据类型,它们存储特定数值的数组。

我想你的意思是list类型。它不包含值,它只包含对对象的引用,对象可以是任何类型的对象。

这些都没有为任何元素保留任何空间(嗯,它们确实如此,但这是内部实现细节)。当将元素添加到列表/数组时,它会为所需的元素添加空间。

列表类型确实比数组类型效率低,这也是数组类型存在的原因。

于 2012-12-25T09:02:14.747 回答
0

它是一个引用数组,仅存储对元素对象的引用。所以每个块的大小是特定的。

http://docs.python.org/2/faq/design.html#how-are-lists-implemented

于 2012-12-25T09:05:00.103 回答
0

在 C 语言术语中,Python 列表类似于PyObject *mylist[100],除了它是动态分配的。它是一块连续的内存,用于存储对 Python 对象的引用。

于 2012-12-25T12:12:31.897 回答