语言如何知道每个元素要保留多少空间?或者它是否保留了数据类型所需的最大空间? (谈论大的浮点数)。在那种情况下是不是有点低效?
答案 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对象的引用。