python基础05--深浅copy, set,bytes
1.1 深浅 copy
1、 = 赋值操作, lis1=[1,2,3] list2 = list1 list1.append(4) 则list1,list2都变
赋值都指向同一个地址,改变一个就会改变另外一个
赋值操作 他俩一样的
2、copy 浅拷贝 复制了一份,创建新对象, 拷贝第一层
list1 = [1,2,3] list2 = list1.copy() list1和list2不是一个对象
list1 = [1,2,3] list2=list1[:] 切片产生新对象
3、deepcopy 深拷贝 复制了一份,创建新对象,包括内部所有内容进行拷贝
import copy
list1 = [1,2,[3,4,5]] list2 = copy.deepcopy(list1)
拷贝比创建对象的过程快
1.2 集合 set
1、可变数据类型,他里面的元素必须是不可变数据类型,无序,不重复
2、可以使用大括号 { } 或者 set() 函数创建集合,
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
3、set可以进行集合运算
print(a - b) # a和b的差集
print(a | b) # a和b的并集
print(a & b) # a和b的交集
print(a ^ b) # a和b中不同时存在的元素
4、set操作
增:
set1.add(元素) 无序添加到集合
set1.update(seq) 把seq中每个元素无序添加到集合
删:
set1.pop() 随机删除,返回被删除的元素
set1.remove(元素) 删除元素,无该元素报错
set1.clear() 清空字典
del set1 删除字典
查:
for i in set1:print(i)
5、列表转化为集合 自动去除列表中重复元素
set(list)
1.3 小数据池
1、= 赋值 == 比较值是否相等 is 比较内存地址 id(内容)内存地址
变量赋值运算 两个变量指向的是一个地址,改变一个,则都会改变
数字,字符串 小数据池,如果创建数据池之内的范围,则共用一个
数字范围 -5---256
字符串范围:1,不能有特殊字符
int1 = 2 int2 = 2 int1和int2 在内存中使用一个id
int1= 300 int2 = 300 int1和int2 在内存中使用的不是一个id
#剩下的 list dict tuple set 没有这个概念
lis1 = [1,2,3] lis2=[1,2,3] lis1和lis2在内存中不是一个id
1.4 bytes
bytes类型 适用存储和网络传输
encode 编码,获取到编码后的结果,bytes
decode 解码,把bytes编程为我们熟悉的字符串
string = b'xxxxxx'.decode() 直接以默认的utf-8编码解码bytes成string
b = string.encode(“utf-8”) 直接以默认的utf-8编码string为bytes
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步