一、列表的相关操作
(1)列表的拼接(同元组)
(2)列表的重复(同元组)
(3)列表的切片(同元组)
- 语法 =>
- 列表[::] 完整格式:[开始索引:结束索引:间隔值]
- [开始索引:] 从开始索引截取到列表最后
- [:结束索引] 从开头截取到结束索引之前
- [开始索引:结束索引] 从开始索引截取到结束索引之前
- [开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
- [:]和[::] 截取所有列表
(4)列表的获取 (同元组)
(5)列表的修改 (可切片)
(6)列表的删除 (可切片)
1、列表的拼接(同元组)
lstvar1 = [123,234,345]
lstvar2 = [456,678,789]
res = lstvar1 +lstvar2
print(res)
运行结果:
2、列表的复刻(同元组)
lstvar1 = [123,234,345]
res = lstvar1 * 3
print(res)
运行结果:
3、列表的切片
(1)[开始索引:] 从开始索引截取到列表最后
lstvar1 = [123,234,345,456,567,678,789]
res = lstvar1[2:]
print(res)
运行结果:
(2)[:结束索引] 从开头截取到结束索引之前
lstvar1 = [123,234,345,456,567,678,789]
res = lstvar1[:5]
print(res)
运行结果:
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前
lstvar1 = [123,234,345,456,567,678,789]
res = lstvar1[2:5]
print(res)
运行结果:
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
- 正向截取
lstvar1 = [123,234,345,456,567,678,789]
res = lstvar1[1:6:2]
print(res)
运行结果:
- 逆向截取
lstvar1 = [123,234,345,456,567,678,789]
res = lstvar1[-1:-6:-2]
print(res)
运行结果:
(5) [:]和[::] 截取所有列表
lstvar1 = [123,234,345,456,567,678,789]
res1 = lstvar1[:]
res2 = lstvar1[::]
print(res1)
print(res2)
运行结果:
4、列表的获取(同元组)
可通过索引获取列表元素
lstvar1 = [123,234,345,456,567,678,789]
res1 = lstvar1[0]
res2 = lstvar1[-1]
print(res1)
print(res2)
运行结果:
5、列表的修改(可切片)
要求的数据类型是:可迭代型数据(容器类型数据、range对象、迭代器)
(1)利用切片可以一次修改多个元素,没有个数上限制
lstvar1 = [123,234,345,456,567,678,789]
lstvar1[1:5] = ["张三","李四","王五","赵六"]
print(lstvar1)
运行结果:
(2)切片配合步长,切出多少个元素,修改多少个元素
lstvar1 = [123,234,345,456,567,678,789]
lstvar1[1:5:2] = ["张三","李四"]
print(lstvar1)
运行结果:
6、列表的删除 (可切片)
lstvar1 = [123,234,345,456,567,678,789]
del lstvar1[-1]
print(lstvar1)
运行结果:
二、列表相关函数
1、增
(1)append() 向列表的末尾添加新的元素
lstvar = [123,234,345,456,567,678,789]
lstvar.append(901)
print(lstvar)
运行结果:
(2)insert () 在指定索引之前插入元素
用法:insert(索引,“要插入元素”)
lstvar = [123,234,345,456,567,678,789]
lstvar.insert(3,"new_num")
print(lstvar)
运行结果:
(3)extend() 迭代追加所有元素
new_lst =[1,2,3,4,5]
lstvar = [123,234,345,456,567,678,789]
lstvar.extend(new_lst)
print(lstvar)
运行结果:
2、删
(1)pop() 通过索引删除元素
lstvar = [123,234,345,456,567,678,789]
lstvar.pop(2)
print(lstvar)
运行结果:
(2)remove() 通过值删除元素
lstvar = [123,234,345,456,567,678,789]
lstvar.remove(345)
print(lstvar)
运行结果:
(3)clear 清空列表
lstvar = [123,234,345,456,567,678,789]
lstvar.clear()
print(lstvar)
运行结果:
3、改、查(参考列表的操作)
4、其他函数
(1)index() 获取某个值在列表中索引
用法:index(值:开始索引:结束索引) 找不到会报错
lstvar = [123,234,345,456,567,678,789]
res = lstvar.index(567)
print(res)
运行结果:
(2)count() 计算某个元素出现的个数
lstvar = [123,234,345,456,567,678,789,234]
res = lstvar.count(234)
print(res)
运行结果:
(3)sort() 列表排序(默认从小到大排序)
lstvar = [123,234,345,456,567,678,789,234]
lstvar.sort()
print(lstvar)
运行结果:
从大到小排序:
lstvar = [123,234,345,456,567,678,789,234]
lstvar.sort(reverse=True)
print(lstvar)
运行结果:
注:英文和中文也可以进行排序,英文排序遵循ascii码,中文排序无规律可循。
5、reverse() 列表反转
lstvar = [123,234,345,456,567,678,789,234]
lstvar.reverse()
print(lstvar)
运行结果:
三、深浅拷贝
1、浅拷贝
将变量进行浅拷贝,浅拷贝生成的新变量不受原变量改动的影响。
方法一:引入copy模块
import copy
lst1 = [11,22,33,44,55]
lst2 = copy.copy(lst1)
lst1.append(66)
print(lst1)
print(lst2)
运行结果:
方法二:变量.copy()
lst1 = [11,22,33,44,55]
lst2 = lst1.copy()
lst1.append(66)
print(lst1)
print(lst2)
运行结果:
2、深拷贝
如果是容器类型数据,深拷贝可以拷贝多级容器,deepcopy()。
如果有一个二级列表,对比来看,首先我们进行浅拷贝并追加赋值
import copy
lst1 = [11,22,33,44,55,[1,2,3]]
lst2 = copy.copy(lst1)
lst1[-1][0] = 2
lst1.append(66)
print(lst1)
print(lst2)
运行结果:
如图,二级容器内的数据也随之改变,说明浅拷贝并没有拷贝二级容器内的内容,而是将二级容器指向了原内存地址。
此时,我们来看看深拷贝输出结果:
import copy
lst1 = [11,22,33,44,55,[1,2,3]]
lst2 = copy.deepcopy(lst1)
lst1[-1][0] = 2
lst1.append(66)
print(lst1)
print(lst2)
运行结果:
如图,二级容器结果没有变化,说明深拷贝成功将二级容器拷贝。
总结:
(1)深拷贝只拷贝一级容器中的所有数据
(2)深拷贝拷贝所有层级的所有元素
浅拷贝数据速度深拷贝速度快
深拷贝在执行时:
如果是不可变数据,地址会暂时指向原来数据。
如果是可变数据,直接开辟新空间。
四、字典相关函数
1、增
(1)赋值
dic = {}
dic[key] = value
dic = {}
dic["key1"] = "value1"
dic["key2"] = "value2"
print(dic)
运行结果:
(2)fromkeys(不推荐) 使用一组键和默认值创建字典
lst = [11,22,33]
dic = {}.fromkeys(lst,None)
print(dic)
运行结果:
2、删
(1)pop() 通过键去获取键值对(若没有该键可设置默认值,预防报错)
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
dic.pop("key2")
print(dic)
运行结果:
(2)popitem() 删除最后一个键值对
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
dic.popitem()
print(dic)
运行结果:
(3)clear() 清空字典
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
dic.clear()
print(dic)
运行结果:
3、改
update() 批量更新,键存在就更新,不存在就添加。
方法一:两字典更新
dic1 = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
dic2 = {"key4":123,"key5":321,"key6":66}
dic1.update(dic2)
print(dic1)
方法二:通过关键字更新
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
dic.update(key6=66,key7=77)
print(dic)
运行结果:
4、查
get() 通过键获取值:
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
res = dic.get("key2")
print(res)
运行结果:
5、其他重要函数
(1)keys 将字典中的键组成新的可迭代对象
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
res = dic.keys()
print(res)
运行结果:
(2)values 将字典中的值组成新的可迭代对象
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
res = dic.values()
print(res)
运行结果:
(3)items 将字典中的键值对凑成一个个元组,组成新的可迭代对象
dic = {"key1":11,"key2":22,"key3":33,"key4":44,"key5":55}
res = dic.items()
print(res)
运行结果:
五、集合相关操作
1、intersection() 交集
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1.intersection(set2)
print(res)
运行结果:
简写:&
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1 & set2
print(res)
运行结果:
2、difference 差集
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1.difference(set2)
print(res)
运行结果:
简写:-
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1 - set2
print(res)
运行结果:
3、union 并集
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1.union(set2)
print(res)
运行结果:
简写:|
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1 | set2
print(res)
运行结果:
4、symmetric_difference 对称差集
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1.symmetric_difference(set2)
print(res)
运行结果:
简写: ^
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1 ^ set2
print(res)
运行结果:
5、issubset 判断是否为子集
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1.issubset(set2)
print(res)
运行结果:
简写:<
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","sir3","lady1","lady3"}
res = set1 < set2
print(res)
运行结果:
6、issuperset 判断是否为父级
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","lady1"}
res = set1.issuperset(set2)
print(res)
运行结果:
简写:>
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir1","lady1"}
res = set1 > set2
print(res)
运行结果:
7、isdisjoint() 检测两集合是否不相交
set1 = {"sir1","sir2","lady1","lady2"}
set2 = {"sir3","lady3"}
res = set1.isdisjoint(set2)
print(res)
运行结果:
六、集合相关的函数
1、增
(1) add() 向集合中添加数据,一次添加一个。
set = {"sir1","sir2","lady1","lady2"}
set.add("sir3")
print(set)
运行结果:
(2)update() 迭代着增加,一次加一堆
strvar = ("lady3","sir3")
set = {"sir1","sir2","lady1","lady2"}
set.update(strvar)
print(set)
运行结果:
2、删
(1)clear() 清空集合
set = {"sir1","sir2","lady1","lady2"}
set.clear()
print(set)
运行结果:
(2)pop() 随机删除一个元素
set = {"sir1","sir2","lady1","lady2"}
set.pop()
print(set)
运行结果:
(3)remove() 删除集合中的指定值,不存在则报错
set = {"sir1","sir2","lady1","lady2"}
set.remove("sir2")
print(set)
运行结果:
(4)discard() 删除集合中的指定值,不存在不删除
set = {"sir1","sir2","lady1","lady2"}
set.discard("sir2")
print(set)
运行结果:
七、冰冻集合
frozenset() 可强制将集合转为冰冻集合
冰冻集合:不能在冰冻集合中进行增删操作,只能交差并补。
set = {"sir1","sir2","lady1","lady2"}
res = frozenset(set)
print(res,type(res))
运行结果: