Python——列表
如果想要表达多个“事物”,可以使用列表。
name = ['a','b','c']
1. 列表所有方法都没有返回值,返回的都为None
增:
1 2 | name.append( 'c' ) #在后面增加一个c name.insert( 1 , 'd' ) #增加到b前面 |
删:
1 2 3 4 | name.remove( 'f' ) #删除f del name[ 1 ] #删除编号1 name.pop( 1 ) #删除编号1,如果不写那么就删除第一个。pop还可以将删除的值提取出来,重新赋值。 name.clear() #删除列表。 |
删除时最好不要使用for循环来进行删除,因为指针的原因。会遗漏某个删除项:
1 2 3 4 5 | lis = [ 1 , 2 , 3 , 4 , 5 , 6 ] for i in lis: lis.remove(i) print (lis) #结果[2, 4, 6] |
可以使用pop来从后往前删。
1 2 3 4 | lis = [ 1 , 2 , 3 , 4 , 5 , 6 ] for i in range ( 0 , len (lis)): lis.pop() print (lis) |
由于删除元素会导致元素的索引改变,所以容易出现问题。建议把要删除的元素添加到另一个集合中然后再批量删除。
1 2 3 4 5 6 7 | lis = [ 1 , 2 , 3 , 4 , 5 , 6 ] del_lis = [] for i in lis: del_lis.append(i) for i in del_lis: lis.remove(i) print (lis) |
改:
1 | name[ 2 ] = 'b' #将b更改为f |
查:
1 2 3 4 | print (name[ 2 ],name[ 0 ]) #取号码进行识别 print (name[ 1 : 3 ]) #取1和2的值,3为结束位。切片功能 print (name[ - 1 ]) #取最后一个值 print (name[ - 2 :]) #取最后两个值 |
以名字来查询:
1 2 3 | print (name.index( 'a' )) #以姓名方式来查找用户的编号 print (name.count( 'a' )) #查看列表中有多少个a print (name2[ 0 : - 1 : 2 ]) #每隔2个打印一次。 |
翻转:
1 | name.reverse() #进行翻转,将文件倒过来 |
排序:
1 | name.sort() #升序:排序方式为,特殊符号-数字-大写-小写-中文 |
1 | name.sort(reverse = True ) #降序 |
合并:
1 | name.extend(name2) #将name2的合并到name中.name2仍然会有,和name中的名称冲突也会一直执行。 |
复制:
1 2 3 | name2 = name.copy() #浅copy,表示只能复制第一层列表中的文字,如果添加子目录,那么就只能copy更改后的。 import copy #深copy,可以copy子层内的所有文字。 name2 = copy.deepcopy(name) |
extend()和append()功能类似,但在处理多个列表时,返回的结果完全不同。
1 2 3 4 5 6 7 8 9 | >>> a = [ 1 , 2 , 3 ] >>> b = [ 4 , 5 , 6 ] >>> a.append(b) >>> a [ 1 , 2 , 3 , [ 4 , 5 , 6 ]] >>> a = [ 1 , 2 , 3 ] >>> a.extend(b) >>> a [ 1 , 2 , 3 , 4 , 5 , 6 ] |
如果想要在A列表中,删除B列表存在的内容:可以使用:
案例:文件复制到A列表中,找到A列表想要删除的内容存放到B列表中,然后for循环B列表的内容删除A列表,最后再保存文件。
1 2 | for i3 in b: a.remove(i3) |
列表推导式与生成器推导式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | v = [ i for i in range ( 10 )] #正常的列表推导式 print (v) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] v1 = (i for i in range ( 10 )) #生成器推导式 #其中v1是一个推导式,需要再进行循环才行。 for i in v1: print (i) #小高级: v2 = [ lambda :i for i in range ( 10 )] #生成10个lambda表达式。 for i2 in v2: print (i2()) #因为当系统运行时,v2所在的列表内的for循环已经开始执行,那么最后i是等于9的。 #当再次for循环时,运行lambda将会查找i的值,那么这会i已经等于9,就会输出9个9 v3 = ( lambda : i for i in range ( 10 )) #生成1个生成式推导式 for i in v3: #再进行for循环时,首先会运行lambda,再巡行里面的for循环。 print (i()) #最终说明: ''' 列表推导式:代码运行完成后直接生成一个列表将所有的值存放到里面。 生成式推导式: 不会生成所有值,而是再次循环时,将逐一进行for循环。 ''' |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)