语言如何知道为每个元素保留多少空间?或者它是否保留了数据类型所需的最大空间?(谈论大浮点数)。那样的话是不是有点低效?
问问题
91 次
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 回答