Python列表
列表
列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字------即当前数据的位置,或索引,第一个索引是0,第二个索引是1,以此类推。
列表是Python中内置有序、可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;
当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;
在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。[10, 20, 30, 40]
['crunchy frog', 'ram bladder', 'lark vomit']
['spam', 2.0, 5, [10, 20]]
[['file1', 200,7], ['file2', 260,9]]
list1=['aaa','bbb','ccc',28,True,1.78,['mike',28],['Jason',36],(1,2,3),{'名字':'正正','爱好':'编程'}]
空值创建:(1)list_data=list() (2)list_data=[]
元素之间使用,区隔头尾使用方括弧[]
1、列表内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加引号''
2、可以有多层嵌套,每一层嵌套为一个独立体存在
列表List的基本特性
增加------(1)支持空列表创建(2)支持列表数据更新(添加)
删除------(1)支持列表整体删除(2)支持列表元素删除(3)支持切片删除
修改------(1)支持列表数据修改(基于下标、索引、index)
查询------(1)支持列表数据查询(基于下标、索引、index)(2)支持切片查询(3)支持第一级元素长度统计(len)
列表常用方法
方法 | 说明 |
lst.append(x) | 将元素x添加至列表lst尾部 |
lst.extend(L) | 将列表L中所有元素添加至列表lst尾部 |
lst.insert(index, x) | 在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一个位置 |
lst.remove(x) | 在列表lst中删除首次出现的指定元素,该元素之后的所有元素前移一个位置 |
lst.pop([index]) | 删除并返回列表lst中下标为index(默认为-1)的元素 |
lst.clear() | 删除列表lst中所有元素,但保留列表对象 |
lst.index(x) | 返回列表lst中第一个值为x的元素的下标,若不存在值为x的元素则抛出异常 |
lst.count(x) | 返回指定元素x在列表lst中的出现次数 |
lst.reverse() | 对列表lst所有元素进行逆序 |
lst.sort(key=None, reverse=False) | 对列表lst中的元素进行排序,key用来指定排序依据,reverse决定升序(False),还是降序(True) |
lst.copy() | 返回列表lst的浅复制 |
1、增加数据
1 2 3 4 5 6 | list1 = [ 'aaa' , 28 , True , 1.78 ,[ 'mike' , 28 ],( 1 , 2 , 3 ),{ '名字' : '正正' , '爱好' : '编程' }] print (list1) list1.append( 'ddd' ) #['aaa', 28, True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}, 'ddd'] print (list1) list1.insert( 1 , 'bbb' ) #在位置1插入'bbb' print (list1) #['aaa', 'bbb', 28, True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}, 'ddd'] |
2、修改数据
1 2 3 4 5 | list1 = [ 'aaa' , 28 , True , 1.78 ,[ 'mike' , 28 ],( 1 , 2 , 3 ),{ '名字' : '正正' , '爱好' : '编程' }] list1[ 4 ] = [ 'mike' , 29 ] #修改数据 print (list1) #['aaa', 28, True, 1.78, ['mike', 29], (1, 2, 3), {'名字': '正正', '爱好': '编程'}] list1[ 0 : 2 ] = [ 'bbb' , 30 ] #修改数据 print (list1) #['bbb', 30, False, True, 1.78, ['mike', 29], (1, 2, 3), {'名字': '正正', '爱好': '编程'}] |
3、查询数据
1 2 3 | list1 = [ 'aaa' , 28 , True , 1.78 ,[ 'mike' , 28 ],( 1 , 2 , 3 ),{ '名字' : '正正' , '爱好' : '编程' }] print (list1[ 1 ]) #28 print (list1[ 0 : 2 ]) #['aaa', 28] |
4、删除数据
1 2 3 4 5 6 7 8 9 10 11 | list1 = [ 'aaa' , 28 , True , 1.78 ,[ 'mike' , 28 ],( 1 , 2 , 3 ),{ '名字' : '正正' , '爱好' : '编程' }] list1.pop( 1 ) print (list1) #['aaa', True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}] list1.remove( 1.78 ) #基于值删除数据 print (list1) #['aaa', True, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}] del list1[ 0 : 2 ] #基于索引位置删除->[] print (list1) #[['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}] list1.clear() #清空全部列表元素->[] print (list1) #[] del list1 #删除整个列表 print (list1) #NameError: name 'list1' is not defined |
特别注意:
1、修改数据和查询数据"一线间"
2、圈定范围修改列表数据时,需要保证添加的数据为可迭代对象
3、注意pop()默认为删除最后一位,可指定索引位置,并返回被删除的值
4、remove()基于值/数据删除数据,删除的是第一个匹配的数据,并非所有
5、列表合并
1 2 3 4 5 6 | list1 = [ 1 , 2 , 3 , 4 ] list2 = [ 5 , 6 , 7 , 8 , 9 ] list_join1 = list1 + list2 #输出list_join->[1,2,3,4,5,6,7,8,9] print (list_join1) list1.extend(list2) #extend()会直接改变当前变量内的值 print (list1) #输出list_join->[1,2,3,4,5,6,7,8,9] |
6、列表排序
1 2 3 4 5 6 7 8 | list1 = [ 9 , 8 , 5 , 6 ] list2 = [ 3 , 4 , 7 , 1 , 2 ] list1.extend(list2) #extend()会直接改变当前变量内的值 print (list1) #[9, 8, 5, 6, 3, 4, 7, 1, 2] list1.sort() #sort()会直接改变当前变量内的值 print (list1) #输出正序list1 list1.sort(reverse = True ) print (list1) #输出倒序list1 |
7、列表反转
1 2 3 4 | list1 = [ '我' , '爱' , '你' ] print (list1) list1.reverse() #reverse()会直接改变当前变量内的值 print (list1) |
8、元素数量统计
1 2 | list1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 1 , 2 , 3 , 4 , 5 ] print (list1.count( 2 )) |
9、自身复制
1 2 | list1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 1 , 2 , 3 , 4 , 5 ] print (list1 * 3 ) |
10、列表的长度
1 2 | list1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 1 , 2 , 3 , 4 , 5 ] print ( len (list1)) |
11、列表的深复制和浅复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import copy num_group = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]] print (num_group) print ( id (num_group)) print ( id (num_group[ 0 ])) #浅复制 num_group_copy = num_group.copy() print (num_group_copy) print ( id (num_group_copy)) print ( id (num_group_copy[ 0 ])) #深复制 num_group_copy_deep = copy.deepcopy(num_group) print (num_group_copy_deep) print ( id (num_group_copy_deep)) print ( id (num_group_copy_deep[ 0 ])) |
输出结果:
[[1, 2, 3], [4, 5, 6]]
140247536210304
140247540820160
[[1, 2, 3], [4, 5, 6]]
140247540811584
140247540820160
[[1, 2, 3], [4, 5, 6]]
140247532933568
140247531244992
浅复制的第一个元素地址与原始列表的第一个元素地址相同,深复制的元素地址与原始地址完全不同
12、包含关系判断
1 2 | message = [ '我' , '爱' , '你' ] print ( '爱' in message) |
输出:True
13、切片延伸
1 2 3 4 5 | num = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] print (num[ 0 : 10 : 2 ]) #[起、止、步长] 输出->[0,2,4,6,8] # 特别注意类似for循环里面的range函数 print (num[:: 2 ]) #输出->[0,2,4,6,8] # 特别注意-起止不设定默认从头到尾的范围 |
输出:
[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8]
14、列表嵌套列表就形成了初级的数据结构,如下:
1 2 3 4 5 6 7 8 | matrix_list = [ [ '拍黄瓜' , '夫妻肺片' , '田园沙拉' ], [ '宫保鸡丁' , '鱼香肉丝' , '番茄烧鸡蛋' ], [ '冰激凌' , '提拉米苏' , '水果' ], [ '啤酒' , '白酒' , '红酒' ], ] print (matrix_list[ 0 ][ 1 ]) |
输出:
夫妻肺片
一组数据里面有高度、有宽度可以叫做
1、矩阵
2、二维数组
15、list与for循环一起联动
1 2 3 4 5 6 7 | dogs = [ '哈士奇' , '拉布拉多' , '边境牧羊犬' , ] for dog in dogs: print (dog) |
输出结果:
哈士奇
拉布拉多
边境牧羊犬
1 2 3 4 5 6 7 8 | menu_list = [ [ '拍黄瓜' , '夫妻肺片' , '田园沙拉' ], [ '宫保鸡丁' , '鱼香肉丝' , '番茄烧鸡蛋' ], [ '冰激凌' , '提拉米苏' , '水果' ], [ '啤酒' , '白酒' , '红酒' ], ] for menu in menu_list: print (menu) |
['拍黄瓜', '夫妻肺片', '田园沙拉']
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
['冰激凌', '提拉米苏', '水果']
['啤酒', '白酒', '红酒']
1 2 3 4 5 6 7 8 9 10 | menu_list = [ [ '拍黄瓜' , '夫妻肺片' , '田园沙拉' ], [ '宫保鸡丁' , '鱼香肉丝' , '番茄烧鸡蛋' ], [ '冰激凌' , '提拉米苏' , '水果' ], [ '啤酒' , '白酒' , '红酒' ], ] for menu in menu_list: print (menu) for food in menu: print (food) |
输出结果:
['拍黄瓜', '夫妻肺片', '田园沙拉']
拍黄瓜
夫妻肺片
田园沙拉
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
宫保鸡丁
鱼香肉丝
番茄烧鸡蛋
['冰激凌', '提拉米苏', '水果']
冰激凌
提拉米苏
水果
['啤酒', '白酒', '红酒']
啤酒
白酒
红酒
16、join连接
1 2 | list1 = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ] print ( "-" .join(list1)) |
a-b-c-d-e-f
17、split拆分
1 2 3 4 5 | list1 = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ] word1 = "-" .join(list1) sep = word1.split( "-" ) print (word1) print (sep) |
输出:
a-b-c-d-e-f
['a', 'b', 'c', 'd', 'e', 'f']
18、取多个文件名,不需要扩展文件名
1 2 3 | files = [ 'aa.jpg' , 'bb,jpg' , 'cc.jpg' ] for file in files: print ( file [ 0 : 2 ],end = ',' ) |
输出:
aa,bb,cc,
1 2 3 | files = [ 'aa.jpg' , 'bb,jpg' , 'cc.jpg' ] for file in files: print ( file .split( '.' )) |
输出:
['aa', 'jpg']
['bb,jpg']
['cc', 'jpg']
19、统计身边的人
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 27 28 29 30 31 32 33 34 35 36 | list_1 = [ [ 'a' , 'male' , 29 , '江苏' ], [ 'b' , 'female' , 31 , '黑龙江' ], [ 'c' , 'female' , 34 , '吉林' ], [ 'a' , 'male' , 28 , '辽宁' ], [ 'a' , 'male' , 31 , '陕西' ], ] list_male = [] list_female = [] list_agemore30 = [] list_jiguan = [] for list in list_1: if list [ 1 ] = = 'male' : list_male.append( list ) else : list_female.append( list ) for list in list_1: if list [ 2 ]> 30 : list_agemore30.append( list ) maxage = 0 minage = 100 for list in list_1: if list [ 2 ]>maxage: maxage = list [ 2 ] for list in list_1: if list [ 2 ]<minage: minage = list [ 2 ] for list in list_1: list_jiguan.append( list [ 3 ]) print (list_male) print (list_female) print (list_agemore30) print (maxage) print (minage) print (list_jiguan) |
输出:
[['a', 'male', 29, '江苏'], ['a', 'male', 28, '辽宁'], ['a', 'male', 31, '陕西']]
[['b', 'female', 31, '黑龙江'], ['c', 'female', 34, '吉林']]
[['b', 'female', 31, '黑龙江'], ['c', 'female', 34, '吉林'], ['a', 'male', 31, '陕西']]
34
28
['江苏', '黑龙江', '吉林', '辽宁', '陕西']
https://www.cnblogs.com/xiaoyh/p/9689596.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)