动态数组如何存储不同的数据类型?

时间:2012-12-25 08:57:31

标签: python list

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

4 个答案:

答案 0 :(得分:1)

Python在列表中仅保留足够的空间,以便引用到各种对象;对象的分配器在实例化时为它们保留足够的空间。

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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