什么是list
list
列表,无长度限制,可以存放任意类型
创建
list1 = [] # 创建一个空列表
list2 = ['ab',12,15.64,15+9j,True] # 创建一个列表并填充初始数据
当新建一个list并用已有list对其初始化时,有两种情况
new_list = old_list # 1 赋值
new_list = old_list[:] # 2 切片复制
用#1来初始化时,两个list使用同一片内存空间,修改任意一个list都会使另一个list同步修改
用#2来初始化时,两个list使用不同内存空间,修改任意一个list不会使另一个list同步修改
list0 = [1,2,3,4,5,6]
list1 = list0
list2 = list0[:]
list1[0] = 0
print(list0)
print(id(list0))
print('--------------------')
print(list1)
print(id(list1))
print('--------------------')
print(list2)
print(id(list2))
===================================
[0, 2, 3, 4, 5, 6]
1732992197192
--------------------
[0, 2, 3, 4, 5, 6]
1732992197192
--------------------
[1, 2, 3, 4, 5, 6]
1732992197256
访问
-
通过下标索引
list2 = ['ab',12,15.64,15+9j,True] print(list2[3].real) =============================================== 15.0
-
切片方式访问
list2 = ['ab',12,15.64,15+9j,True] print(list2[:2]) # 取前2位 print(list2[3:]) # 从第4位开始取到结束 print(list2[::2]) # 从第1位开始隔一个取一个 print(list2[::-1]) # 反向遍历 =============================================== ['ab', 12] [(15+9j), True] ['ab', 15.64, True] [True, (15+9j), 15.64, 12, 'ab']
增删改查
-
增加的方法有
.append()
.insert()
.extend()
-
.append()
在列表的末尾追加项list2 = ['12','23','34','45'] list2.append('56') list2.append('67') print(list2) =================================== ['12', '23', '34', '45', '56', '67']
-
.insert()
在指定位置加入项list2 = ['12','23','34','45'] list2.insert(0,'00') # insert(位置,项) list2.insert(1,'01') print(list2) =================================== ['00', '01', '12', '23', '34', '45']
-
.extend()
将一个可迭代的对象添加到列表中list1 = ['00','01'] list2 = ['12','23','34','45'] list1.extend(list2) print(list1) =================================== ['00', '01', '12', '23', '34', '45']
-
-
删除的方法有
.remove()
.pop()
.clear()
del
-
.remove()
直接从列表中删除第一个找到的元素,没有找到则报错list2 = ['00','12','23','34','45','00'] print(list2) list2.remove('00') print(list2) =================================== ['00', '12', '23', '34', '45', '00'] ['12', '23', '34', '45', '00']
-
.pop()
从指定索引位置删除,当参数缺省时,删除最后一位,当参数越界时报错list2 = ['00','12','23','34','45','00'] print(list2) list2.pop() print(list2) list2.pop(1) print(list2) =================================== ['00', '12', '23', '34', '45', '00'] ['00', '12', '23', '34', '45'] ['00', '23', '34', '45']
-
.clear()
清空内容list2 = ['00','01','02','03','04'] print(list2) list2.clear() print(list2) =================================== ['00', '01', '02', '03', '04'] []
-
del
系统中通用的删除方式,从指定索引位置删除,支持切片。缺省时删除容器list2 = ['00','01','02','03','04'] print(list2) del list2[0] # 删掉第0位 print(list2) del list2[0:2] # 删掉第0到2位 print(list2) del list2[:] # 清空内容,但保留地址 print(list2) del list2 # 清空内容同时回收地址 print(list2) =================================== ['00', '01', '02', '03', '04'] ['01', '02', '03', '04'] ['03', '04'] [] NameError: name 'list2' is not defined
-
-
修改的方法有
list[index] = new
-
列表[位置] = 新值
利用此语法替换指定位置的元素list2 = ['00','01','02','03','02'] print(list2) list2[0] = '***' print(list2) =================================== ['00', '01', '02', '03', '02'] ['***', '01', '02', '03', '02']
-
-
查询的方法有
.index()
-
.index()
查找指定的元素,返回第一个找到的元素的索引,没有找到则报错list2 = ['00','01','02','03','02'] print(list2.index('02')) print(list2.index('02',3)) # 指定从第3号索引位置开始查找 =================================== 2 4
-
其他方法
-
'连接符'.join()
利用连接符将可迭代的对象进行连接,对象中的元素必须全部为str
类型list1 = ['0','1','2','3','4'] ss1 = ''.join(list1) ss2 = '*'.join(list1) print(ss1) print(ss2) =================================== 01234 0*1*2*3*4
-
.copy()
浅拷贝,执行copy()动作,返回一个新的地址,存放的内容与原来相同对于list而言,因为其可以嵌套多维,故浅拷贝有以下特性
当list仅有一维时,修改list中元素,实际上是修改地址让其指向新的内容
源list和被修改的经复制的list表现出不同
当list有多维时,修改list中嵌套的list中的元素,并没有修改嵌套首地址
源list和被修改的经复制的list可能表现相同
list0 = [1,2,3,4,5,6] list1 = [1,[2,3],[4,5,6]] list0_copy = list0.copy() list1_copy = list1.copy() list0_copy[3] = 0 list1_copy[0] = 0 list1_copy[2][1] = 0 print(list0) print(list0_copy) print('-'*20) print(list1) print(list1_copy) =================================== [1, 2, 3, 4, 5, 6] [1, 2, 3, 0, 5, 6] -------------------- [1, [2, 3], [4, 0, 6]] [0, [2, 3], [4, 0, 6]]
-
.count()
计数,统计list中目标元素的个数list1 = [0,1,0,1,0,1,0,1,0,0] print(list1.count(0)) ===================================== 6
-
sorted()
或.sort()
排序默认升序,规定参数
reverse = True
按降序排序或者排序完成后添加
.reverse()
实现翻转list1 = [1,5,4,3,9,7,5] list1 = sorted(list1) print(list1) list1.sort(reverse = True) print(list1) ================================ [1, 3, 4, 5, 5, 7, 9] [9, 7, 5, 5, 4, 3, 1]
-
.sum()
求和 -
.min()
找最小值 -
.max()
找最大值
支持的符号
+
将两个列表拼成一个新列表*
生成一个将原列表重复N遍的新列表in
判断元素是否在列表中,返回布尔型的值is
判断两个列表是否在一个地址[ ]
下标[:]
切片