day06 集合,id, is, ==, 同代码块下的缓存机制,不同代码块下的缓存机制,小数据池,深浅copy
01今日内容大纲
- id is == 用法
- 代码块
- 同一代码块下的缓存机制
- 不同代码块下的缓存机制(小数据池)
- 总结
- 集合(了解)
- 深浅copy
02昨日回顾以及作业讲解
-
字典初始:
- 查询速度快,储存大量的关联型数据.
- 键:必须是不可变的数据类型(int,str,bool,tuple),唯一的.
- 值:任意数据类型,对象
- 字典在3.5x版本之前是无序的,3.6x按照初始时的顺序排列,3.7之后有序的
-
增删改查
- 增: setdefualt(), dic['age'] = 18
- 删:pop键(可以设置返回值). clear清空, del dic["name"]
- 改: dic["name"] = 'wusir'
- 查: dic["name"], dic.get("name"), dic.keys(), dic.values(), dic.items()
-
字典的嵌套.
03具体内容
-
id is ==
# id >>>身份证号:内存地址 # is >>>判断内存地址是否相同 # == >>>比较运算,判断两边的值是否相等 -
代码块
- 代码块:我们所有的代码都需要依赖代码块执行
- 一个文件就是一个代码块
- 交互式命令下一行就是一个代码块
-
两个机制
- 同一个代码块下的缓存机制.
- 前提条件: 同一代码块下
- 机制内容: 在内存中只存在一个,即id相同
- 适用对象: int, str, bool
- 具体细则: 所有的数字,bool,几乎所有的字符串
- 优点: 提升性能,节省内存
- 不同代码块下的缓存机制:小数据池( -5~256 )
- 前提条件: 不同代码块下
- 机制内容: 内存中只存在一个id相同
- 适用对象: int , str , bool
- 具体细则: -5~256数字, bool ,满足规则的字符串
- 优点: 提升性能, 节省内存
- 同一个代码块下的缓存机制.
-
集合 set(): python 基础数据类型,可变数据类型; 容器型的数据类型,要求元素是不可变类型,无序,不重复,
- 集合的作用:
- 列表的去重
- 关系测试: 交集, 并集, 差集, 子集, 超集...
- 集合的创建
- set1 = set({1,3,"barry", False})
- set = {1, 3, "taibai",4,"wuda"} #跟没有键的字典一样
# 空集合: # print({}, type({})) # 空字典 # set1 = set() # print(set1) # 集合的有效性测试 # set1 = {[1,2,3], 3, {'name': 'alex'}} # print(set1) # set1 = {'太白金星', '景女神', '武大', '三粗', 'alexsb', '吴老师'} # 增: # add # set1.add('xx') # print(set1) # update迭代着增加 # set1.update('fdsafgsd') # print(set1) # 删 # remove # remove 按照元素删除 # set1.remove('alexsb') # # print(set1) # pop 随即删除 # set1.pop() # print(set1) # 变相改值 # set1.remove('太白金星') # set1.add('男神') # print(set1) #关系测试:*** # 交集 # set1 = {1, 2, 3, 4, 5} # set2 = {4, 5, 6, 7, 8} # print(set1 & set2) # 并集: # print(set1 | set2) # 差集 - # print(set1 - set2) # 反交集 # print(set1 ^ set2) # 子集 # set1 = {1,2,3} # set2 = {1,2,3,4,5,6} # # print(set1 < set2) # # # 超集 # print(set2 > set1) # 列表的去重 *** # l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ] # set1 = set(l1) # l1 = list(set1) # print(l1) # 用处:数据之间的关系,列表去重。 - 集合的作用:
-
深浅copy(面试会考)
# 赋值运算 # l1 = [1, 2, 3, [22, 33]] # l2 = l1 # l1.append(666) # print(l1) # print(l2) # 浅copy # l1 = [1, 2, 3, [22, 33]] # l2 = l1.copy() # l1.append(666) # print(l1,id(l1)) # print(l2,id(l2)) # l1 = [1, 2, 3, [22, 33]] # l2 = l1.copy() # l1[-1].append(666) # print(id(l1[-1])) # print(id(l2[-1])) # print(id(l1[0])) # print(id(l2[0])) # print(l1) # print(l2) # l1 = [1, 2, 3, [22, 33]] # l2 = l1.copy() # l1[0] = 90 # print(l1) # print(l2) # 深copy # import copy # l1 = [1, 2, 3, [22, 33]] # l2 = copy.deepcopy(l1) # # print(id(l1)) # # print(id(l2)) # l1[-1].append(666) # print(l1) # print(l2) # 相关面试题; # l1 = [1, 2, 3, [22, 33]] # l2 = l1[:] # l1[-1].append(666) # print(l1) # print(l2) # 浅copy: list dict: 嵌套的可变的数据类型是同一个。 # 深copy: list dict: 嵌套的可变的数据类型不是同一个 。
04今日总结
- id is == 三个方法要会用,知道是做什么的
- 回答的时候一定要分清楚:同一个代码块下使用一个缓存机制.不同的代码块下使用另一个缓存机制(小数据池)
- 小数据池:数字范围是-5~256
- 缓存机制的优点:提升性能,节省内存
- 集合:列表去重,关系测试
- 深浅copy: 理解浅copy, 深浅copy,课上练习题整明白
05预习内容
- 数据类型的补充以及编码的进阶:<https://www.cnblogs.com/jin-xin/articles/10577131.html

浙公网安备 33010602011771号