发布时间:2024-01-24阅读(3)
List是什么?
List顾名思义就是列表,那么它具体描述是什么呢?
列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。在python中list是保留字,List中的每个元素都有自己的编号,很像C、C 、java中的数组,但是List更强大。列表主要有以下几个特点:
List简单使用
1. 列表创建
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
此外,如果创建一些常用的数列等列表,可采取以下pythonic的方法快速创建列表:
2. 列表访问
列表访问和其他数组访问差不多,常用索引。但是python列表可以切片,可以取指定索引区间内的元素。
3. 操作列表的函数
例子:
3. 列表类型定义的函数
例子:
list一些常见函数的时间复杂度
常见函数的时间复杂度
【附加阅读】
底层实现机制
List对象是用c结构来实现,由一个保存元素的指针数组和预先分配的内存总容量构成。分离式结构,两者之间用一个元素建立一个链接,连在一起。能够根据元素的数量自动的扩充或者缩小list的内存大小。
要在内存中给集合开辟一块区域,总得先确定大小(容量),不然如何开辟?另外,确定区域后,还要知道当前已经占用了几个元素(元素个数),一旦溢出,就需要重新申请空间。要表达这种结构,有两种实现方式。一种是把头信息和元素串到一起,形成一个元素个数 2的表。另一种就是把头信息和元素分开放,两者之间用一个元素建立一个链接,连在一起。
存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。一体式结构整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。
分离式结构中表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。一旦表需要扩充,对于一体式结构来说,就要重新申请一块更大的空内存区域,将所有元素放入其中,再清空旧的内存区域。对于分离式结构来说,则需要将链接地址更新一下,顺序表对象是不变的。
List的扩充采取两种策略,每次扩充增加固定数目的存储位置,这种策略可称为线性增长,节省空间,但是扩充操作频繁,操作次数多。每次扩充容量加倍,以空间换时间。从实现上来讲,在python中创建空ist时,会申请一个8个元素大小的内存区域。以后如果满了,就扩容4倍,且当元素总数达到50000时,再扩容就改为2倍。
欢迎分享转载→http://www.umpkq.cn/read-215673.html
下一篇:花呗额度怎么分享
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图