小数据池 深浅copy 集合
-
id is ==
#id is(内存地址和判断内存地址是否相同) #id 相同,值不一定相同 #值相同,id不一定相同 # s1 = [1, 2, 3] # s2 = [1, 2, 3] # # print(id(s1)) # # print(id(s2)) # # s1 ='holting' # # s2 = 'holting' # print(s1 is s2)
-
代码块
- 代码块:我们所有的代码都 需要依赖代码块执行。
- 一个文件就是一个代码块。
- 交互式命令下一行就是一个代码块。
-
两个机制:同一个代码块下,有一个机制。不同的代码块下,遵循另一个机制。
-
同一个代码块下的缓存机制。
- 前提条件:统一代码块下内。
- 机制内容:pass
- 适用的对象: int bool str
- 具体细则: 所有的数字,bool,几乎所有的字符串。
- 优点:提升性能,节省内存。
-
不同代码块下的缓存机制:小数据池。
-
前提条件:不同代码内。
-
机制内容:pass
-
适用对象:int bool str
-
具体细则: -5 ~256数字,bool ,满足规则的字符串。
-
优点: 提升性能,节省内存。
# s1 = [1, 2, 3] # s2 = [1, 2, 3] # # print(id(s1)) # # print(id(s2)) # # s1 ='holting' # # s2 = 'holting' # print(s1 is s2)
总结:
- 面试题考。
- 回答的时候一定要分清楚:同一个代码块下适用一个缓存机制。不同的代码块下适用另一个换粗机制(小数据池)
- 小数据池:数字的范围是-5 ~256
- 缓存机制的优点:提升性能,节省内存。
集合 set(了解)
- 容器类型的数据类型,它要求它里面的元素是不可变数据,但它本身是可变数据类型。
- 集合是无序的
集合的作用:
列表去重。
关系测试:并集,交集,差集、、、
#集合的创建: # set1 = set({1,3,'ddd', 5,'holting'}) # print(set1) #空集合: # print({},type({}))#空字典 # set1 = set() # print(set1) set1 = {'太白金星', '景女神', '武大', '三粗', 'alexsb', '吴老师'} #增add update迭代着增加 # set1.add('xxxx') # print(set1) # # set1.update('dadfaffa') # print(set1) #删 remove 按照元素删 pop 随机删除 # set1.remove('武大') # print(set1) # set1.pop() # print(set1) # 变相改值 #先删除,在增加 # set.remove('太白金星') # set.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)) # print(id(l2)) # print(l1) # print(l2) # l1 = [1, 2, 3, [22, 33]] # l2 = l1.copy() # l1[0] = 90 # print(l1) # print(l2) # 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 : 嵌套的可变数据类型不是同一个