Python中列表的基础结构

时间:2018-02-04 10:07:13

标签: python

根据我读过的资源,python中的列表数据结构是用数组实现的。但是,python列表可以包含不同类型的对象。如果它的底层数据结构是数组,那么数组如何包含不同类型的对象?

我错了,数组是特定的数据类型吗?

3 个答案:

答案 0 :(得分:2)

Python列出了对数据的存储引用,而不是数据本身。直接来自python源代码object.h

  

总是通过类型' PyObject *'的指针访问对象。   类型' PyObject'是一个只包含引用的结构   count和类型指针。为对象分配的实际内存   包含其他只能在转换后才能访问的数据   指向更长结构类型的指针。

如果您需要更详细的信息,源代码中的注释是详细和描述性的。

答案 1 :(得分:2)

我在这里给你一个程序示例你可以很容易地理解对象在列表中的存储方式

class my_class:
    def __init__(self):
        self.var=1
    def setparameter(self,txt):
        self.txt=txt

objects = [my_class() for i in range(3)] # creates multiple objects here
for obj in objects:
    obj.setparameter(5)

列表中的对象是类实例的指针。查看其数据结构

enter image description here

参见另一个例子,这些列表是子列表的指针

列表清单

 a=[[1,2,34],[12,4,5]]

enter image description here

答案 2 :(得分:1)

你错了,它是一个特定类型的数组。 Python列表实现为对其他Python对象的引用(直接或间接地,内存地址)的引用数组。还有更多的东西,因为还有很多家政服务。