3.8 小数据池
- 小数据池:缓存机制(驻留机制)
- ==(用于判断两边的内容是否相等)
-
a=10 b=10 print(a==b)# ==用于判断两边的内容是否相等
- is(用于判断两边内存地址是否相等)
-
a=10 b=10 print(a is b) #输出 True
-
#小数据池总结 #1、数字范围:-5~256 #2、字符串: """ 1、同一代码下,内容相同则内存地址相同 2、乘法相乘总长度不能超过20 3、惩罚的时候中文、特殊符号乘以0 """ #3、布尔型:同一代码下,内容相同则内存地址相同 #代码块:一个文件、一个函数、一个类、一个模块、终端每一行代码都叫做代码块 #1、数字 """ 1、同一代码下,内容相同则内存地址相同 2、数字相乘不能用浮点型 3、数字的范围:-5~256 """ #2、字符串 """ 1、同一代码下,内容相同则内存地址相同 2、字符串相乘总长不能超过20 3、乘法的时候中文、特殊字符相乘以1或0 """ #3、布尔型:同一代码下,相同内容则内存地址相同
3.9 深浅拷贝
- 赋值
-
a=20#开辟一个内存空间存放20,a指向这个内存地址 b=a#把a的值赋值给b,这时b指向存放20的内存地址 print(id(a)) print(id(b)) #结果为 1403154048 1403154048
-
- 浅拷贝
- 拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用其他对象我不复制
-
import copy #导入copy模块 a=[1,2,3,[4,5,6]] b=a.copy b[0]=5 print(a) print(b) #结果为:[1,2,3,[4,5,6]] #[5,2,3,[4,5,6]] b[-1][0]=9 print(a) print(b) #结果为:[1,2,3,[9,5,6]] #[1,2,3,[9,5,6]]
- 深拷贝
- 外围和内部元素都进行拷贝对象本身,而不是引用。也就是把对象复制一遍,并且该对象中引用对象也复制
-
import copy a=[1,2,3,[4,5,6]] b=copy.deepcopy(a) a[0]=7 print(a) print(b) #结果为:[7,2,3,[4,5,6]] #[7,2,3,[4,5,6]] a[-1][0]=9 print(a) print(b) #结果为:[1,2,3,[9,5,6]] #[1,2,3,[9,5,6]]
- 总结:浅拷贝只是拷贝第一层元素,第一层元素引用的元素不复制只是引用;浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素;
深拷贝:拷贝第一层元素和第一层元素引用对象,不可变数据进行公用,可变的数据类型再次开辟空间
3.10 集合(set)
- 什么是集合?
- 可以理解成没有值的字典,无序,不支持索引
- 天然去重
- 定义集合
-
s = {1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4} print(s) #结果为{False, 1, 32, 2, 4, 6, 12, (1, 2, 3), 'alex'}
- 集合的增、删、改、查
- 增
-
s={1,2,3,4} s.add("67")#只能添加一个 print(s) #结果为{1,2,3,4,"67"}
-
s={1,2,3,4} s.update("今天")#迭代添加 print(s) #结果为:{1,2,3,4,"今","天"}
- 删
-
s={1,2,3,4} print(s.pop())# pop有返回值 4 print(s)#{1,2,3}
-
s={1,2,3,4} s.remove(1)#指定元素删除 print(s)#{2,3,4}
-
s={1,2,3,4} s.clear()#清空 {}
- 改:先删后改
- 查
-
s={1,2,3,4} for x in s print(x)
- 其他操作:
# s1 = {1,2,3,4,5,6,7} # s2 = {5,6,7,1} # print(s1 & s2) # 交集 # print(s1 | s2) # 并集 # print(s1 - s2) # 差集 # print(s1 ^ s2) # 反交集 # print(s1 > s2) # 父集(超集) # print(s1 < s2) # 子集 # print(frozenset(s1)) # 冻结集合 更不常用 # dic = {frozenset(s1):1} # print(dic)
原文地址:https://www.cnblogs.com/zhangdadayou/p/11171858.html
时间: 2024-10-10 01:23:16