数据结构论坛

首页 » 分类 » 常识 » IT编程Python开发基础系列列表
TUhjnbcbe - 2025/5/21 16:43:00

列表是Python中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。第一个元素的索引是0,第二个索引是1,依此类推。

Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。

从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

比如,对于这个列表alist=[1,“a”,[11,22],{“k1”:”v1”}],其在内存内的存储方式是这样的:

1.创建方式

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。

lis=[]#创建一个空列表lis=[1,2,3]lis=[1,a,[11,22],{k1:v1}]lis=[1,2,[3,4,5]]

2.访问列表内的元素

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是len(list)-1。

lis=["a","b","c"]lis[0]alis[1]blis[2]clis[3]Traceback(mostrecentcalllast):File"pyshell#7",line1,inmodulelis[3]IndexError:listindexoutofrange

3.修改元素的值

直接对元素进行重新赋值。

lis[0]alis[0]="d"lis[0]d

4.删除元素

使用del语句或者remove(),pop()方法删除指定的元素。

lis=["a","b","c"]dellis[0]lis[b,c]lis.remove("b")lis[c]lis.pop()clis[]

8.多维列表(嵌套列表)

列表可以嵌套列表,形成多维列表,形如矩阵。其元素的引用方法是list[j][k].....。当然,也可以嵌套别的数据类型。

a=[[1,2,3],[4,5,6],[7,8,9]]a[0][1]2a=[[1,2,3],[4,5,6],[7,8,9],{"k1":"v1"}]a[3]["k1"]v1

9.列表的遍历

列表有好几种遍历方式:

a=[1,2,3,4,5,6]---------------------------foriina:#遍历每一个元素本身print(i)------------------------------foriinrange(len(a)):#遍历列表的下标,通过下标取值print(i,a)--------------------------------x=9ifxina:#进行是否属于列表成员的判断。该运算速度非常快。print("True")else:print("False")

11.将列表当做堆栈

Python的列表特别适合也很方便作为一个堆栈来使用。堆栈是一种特定的数据结构,最先进入的元素最后一个被释放(后进先出)。将列表的表头作为栈底,表尾作为栈顶,就形成了一个堆栈。用列表的append()方法可以把一个元素添加到堆栈顶部(实际上就是在列表的尾部添加一个元素)。用不指定索引的pop()方法可以把一个元素从堆栈顶释放出来(也就是从列表尾部弹出一个元素)。例如:

stack=[3,4,5]stack.append(6)stack.append(7)stack[3,4,5,6,7]stack.pop()7stack[3,4,5,6]stack.pop()6stack.pop()5stack[3,4]

列表在内存内部是顺序存储结构的,所以在其尾部的添加和删除动作,也就是append和pop方法的效率非常高,具备随机存取速度,也就是O(1)的时间复杂度,因此用作堆栈是再合适不过了。

12.将列表当作队列

也可以把列表当做队列用。队列是一种先进先出的数据结构。但是用Python的列表做队列的效率并不高。因为,虽然在列表的最后添加或者弹出元素速度很快,但在列头部弹出第一个元素的速度却不快(因为所有其他的元素都得跟着一个一个地往左移动一位)。通常我们使用queue.Queue作为单向队列,使用collections.deque作为双向队列。

以上就是关于Python列表的详解,后续会持续更新Python相关知识点。私信回复,免费领取G网盘全科目编程学习资源,包含视频教程、项目源码、学习路线图等,赶快私信吧!

1