1.列表存储的两种方式
(1)元素内置方式
采用元素内置的方式只能存放同类型元素的数据类型,例如列表中的元素都为整形,元素类型相同,每个元素存放的地址空间大小也相同,则列表中每个元素都是顺序存放的
(2)元素外置方式
采用元素外置的方式能够存放所用不同类型元素的数据类型,例如列表中元素即有整形,又有字符串等,不同类型元素的存放空间大小不同,但是存放元素的逻辑地址本身的空间大小是一样的,均为4bytes,则列表中实际存放的是元素的逻辑地址
如图:
2.顺序表的一体式结构和分离式结构
(1)一体式结构:
表头信息与数据区一起存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数
优点:查询方便,直接查询
缺点:当超过开始申请的最大存放元素个数时,重新申请存储空间,并修改新存储空间的表头信息,存储地址变化
(2)分离式结构:
表头信息与数据区分离存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数,数据区的地址
优点:当超过开始申请的最大存放元素个数时,重新申请存储空间,直接修改原来表头的地址即可,且表头本身的存储地址不变
缺点:查询不是直接查询
如图:
3.顺序表扩充的方式
(1)每次扩充相同存储空间
例如:开始申请4个元素的存储空间,不够用时,再次扩充4个,不够用时,再扩充4个
(2)每次翻倍扩充存储空间
例如:开始申请4个元素的存储空间,不够用时,再次扩充8个,不够用时,再扩充16个
4.python列表添加元素和删除元素
(1)表尾插入元素
时间复杂度为O(1)
(2)非保序元素插入
时间复杂度为O(2)
(3)保序元素插入
时间复杂度为O(n)
如图:
5.python列表的实现
python列表打印id(my_list)的值永远不变,说明python列表是采用分离式结构实现的