一.列表的相关操作
(1)列表的拼接 (同元组)
(2)列表的重复 (同元组)
(3)列表的切片 (同元组)
语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到列表的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
(5)[:]或[::] 截取所有列表
(4)列表的获取 (同元组)
(5)列表的修改 ( 可切片 )
(6)列表的删除 ( 可切片 )
(1)列表的拼接 (同元组)
1 lst1 = [1,2,3]
2 lst2 = [4,5,6,6]
3 res = lst1 + lst2
4 print(res)#[1, 2, 3, 4, 5, 6, 6]
(2)列表的重复 (同元组)
lst= [1,2,3]
res = lst*3
print(res)#[1, 2, 3, 1, 2, 3, 1, 2, 3]
(3)列表的切片 (同元组)
<1>[开始索引:] 从开始索引截取到列表的最后
1 lst = ['a','b','c','d','e','f','g']
2 res = lst[2:]#2 3 4 5 6.....
3 print(res)#['c', 'd', 'e', 'f', 'g']
<2>[:结束索引] 从开头截取到结束索引之前(结束索引-1)
1 lst = ['a','b','c','d','e','f','g']
2 res = lst[:4] #0 1 2 3
3 print(res)# ['a', 'b', 'c', 'd']
<3>[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
1 lst = ['a','b','c','d','e','f','g']
2 res = lst[4:6]
3 print(res)#['e', 'f']
<4>[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
1 lst = ['a','b','c','d','e','f','g']
2 # 正向截取
3 res = lst[::2] # 0 2 4 6 8 ...
4 print(res)#['a', 'c', 'e', 'g']
5 # 逆向截取
6 res = lst[::-2] # -1 -3 -5 -7 -9
7 print(res)#['g', 'e', 'c', 'a']
<5>[:]或[::] 截取所有列表
1 lst = ['a','b','c','d','e','f','g']
2 res = lst[:]#['a', 'b', 'c', 'd', 'e', 'f', 'g']
3 res = lst[::]#['a', 'b', 'c', 'd', 'e', 'f', 'g']
4 print(res)
(4)列表的获取 (同元组)
1 # 0 1 2 3 4 5 6 7
2 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
3 # -8 -7 -6 -5 -4 -3 -2 -1
4 res = lst[7]#lx
5 res = lst[-1]#lx
6 print(res)
(5)列表的修改 ( 可切片 )
要求的数据类型是可迭代性数据(容器类型数据,range对象,迭代器)
<1>利用切片可以一次修改多个元素,没有个数上的限制
1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
2 lst[3:5] = ["cd","ab","sb刘子豪"]
3 print(lst)#['吕洞宾', '何仙姑', '铁拐李', 'cd', 'ab', 'sb刘子豪', '蓝采和', '韩湘子', 'lx']
<2>切片配合步长,切出多少个元素,修改多少个元素
1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
2 lst[::2] = range(1,5) # 0 2 4 6 8 10 .....
3 print(lst)#[1, '何仙姑', 2, '曹国舅', 3, '蓝采和', 4, '王文']
(6)列表的删除 ( 可切片 )
1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
2 del lst[-1]
3 print(lst)#['吕洞宾', '何仙姑', '铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子']
注意:
删除的是变量res本身,不是列表中的元素
1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
2 res = lst[-1] #lx
3 del res
4 print(lst)#["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
del lst[::3]
1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
2 del lst[::3] # 0 3 6 9 12 ...
3 print(lst)#['何仙姑', '铁拐李', '张果老', '蓝采和', 'lx']
元组中的列表,里面的元素可以修改
1 tup = (1,2,3,[4,5,6,(7,8,9)])
2 tup[-1][1] = 6666
3 print(tup)#(1, 2, 3, [4, 6666, 6, (7, 8, 9)])
二.列表相关的函数
增
(1)append 向列表的末尾添加新的元素
1 lst = ['a'] 2 lst.append('b') 3 print(lst)#['a', 'b']
(2)insert 在指定索引之前插入元素
1 lst=['a','b'] 2 lst.insert(1,'c') 3 print(lst)#['a', 'c', 'b']
(3)extend 迭代追加所有元素
要求:数据的类型是可迭代性数据
1 lst = ['a'] 2 strvar = 'bcdefg' 3 lst.extend(strvar) 4 print(lst)# ['a', 'b', 'c', 'd', 'e', 'f', 'g']
删
(1)pop 通过指定索引删除元素,若没有索引移除最后那个
1 lst=['a','b','c','d','e'] 2 lst.pop(0)#['b', 'c', 'd', 'e'] 3 lst.pop() #['a', 'b', 'c', 'd'] 4 print(lst)
(2)remove 通过给予的值来删除,如果多个相同元素,默认删除第一个
1 lst=['a','b','c','d','e'] 2 lst.remove('c') 3 print(lst) #['a', 'b', 'd', 'e']
(3)clear 清空列表
1 lst=['a','b','c','d','e'] 2 lst.clear() 3 print(lst)#[]
改查(参考:列表的相关操作)
其他函数
(1)index 获取某个值在列表中的索引
1 lst=['a','b','c','d','e'] 2 lst.index('d') 3 print(lst)#3
(2)count 计算某个元素出现的次数
重点区别:
字符串里面的count 可以划定范围,列表里面的count不行
1 lst=['a','b','c','d','e','b','b','f','b'] 2 res=lst.count('b') 3 print(res)#4
(3)sort() 列表排序(默认小到大排序)
1 lst = [44,99,1,10,3,-5,-90] 2 lst.sort() 3 print(lst)#[-90, -5, 1, 3, 10, 44, 99]
sort(reverse=True) 从大到小排序
1 lst=[-90, -5, 1, 3, 10, 44, 99] 2 lst.sort(reverse=True) 3 print(lst)#[99, 44, 10, 3, 1, -5, -90]
排序英文 (ascii 编码)一位一位进行比较,在第一位相同的情况下,比较第二位,以此类推
也可以对中文进行排序!(无规律可循)
(4)reverse() 列表反转操作
1 lst = ["lx","刘德华","郭富城","张学友"] 2 lst.reverse() 3 print(lst)#['张学友', '郭富城', '刘德华', 'lx']
三.浅拷贝 和 深拷贝
总结:
(1)浅拷贝只拷贝一级容器中的所有数据
(2)深拷贝拷贝所有层级的所有元素
浅拷贝速度比深拷贝速度快
深拷贝在执行时: 如果是不可变数据,地址会暂时的指向原来数据,
如果是可变数据,直接开辟新空间
不可变数据: Number str tuple
可变数据 : list set dict
先引入模块
import copy
(1)浅拷贝
方法一 copy.copy 模块.方法
1 lst1 = [1,2,3] 2 lst2 = copy.copy(lst1) 3 print(lst2)#[1, 2, 3]
方法二 列表.copy()
1 lst1 = [1,2,3] 2 lst2 = lst1.copy() 3 print(lst2)#[1, 2, 3]
(2)深拷贝 copy.deepcopy
1 lst1 = [1,2,3,[4,5,6]] 2 lst2 = copy.deepcopy(lst1) 3 print(lst2)#[1, 2, 3, [4, 5, 6]]