day6
01 今日内容大纲
- is == id 用法
- 代码块
- 同一代码块下的缓存机制
- 不同代码块下的缓存机制(小数据池)
- 总结
- 集合(了解)
- 深浅copy
02 昨日回顾以及作业讲解
- 字典初始:
- 查询速度快,{'name': '太白'}, 存储大量的关联型数据。
- 键:必须是不可变的数据类型(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()
- 字典的嵌套。
具体内容
-
id is ==
i = 100
s = 'alex'
print(id(i)) -
== 比较的是两边的值是否相等
-
is 判断的是内存地址是否相同
i =100
a = 100
print(i is a)
# id 相同,值一定相同
# 值相同,id不一定相同
代码块代码块
代码块:我们所有的代码都需要依赖代码块执行。
一个文件就是一个代码块。
交互式命令下一行就是一个代码块。
两个机制: 同一个代码块下,有一个机制。不同的代码块下,遵循另一个机制。
同一个代码块下的缓存机制。
前提条件:同一个代码块内。
机制内容:pass
适用的对象: int bool str
具体细则:所有的数字,bool,几乎所有的字符串。
优点:提升性能,节省内存。
不同代码块下的缓存机制: 小数据池。
前提条件:不同代码块内。
机制内容:pass
适用的对象: int bool str
具体细则:-5~256数字,bool,满足规则的字符串。
优点:提升性能,节省内存。 -
总结:+
- 面试题考。
- 回答的时候一定要分清楚:同一个代码块下适用一个缓存机制。不同的代码块下适用另一个缓存机制(小数据池)
- 小数据池:数字的范围是-5~256.
- 缓存机制的优点:提升性能,节省内存。
python基础数据类型之:集合 set。容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合是无序的。{}。
集合的作用:
- 列表的去重。
- 关系测试: 交集,并集,差集,.....
- pass
集合的创建:
set1 = set({1, 3, 'Barry', False})
set1 =
print(set1)
空集合:
print({}, type({})) # 空字典
set1 = set()
print(set1)
集合的有效性测试
set1 = {[1,2,3], 3, {'name': 'alex'}}
print(set1)
set1 =
增:
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 =
set2 =
print(set1 & set2)
并集:
print(set1 | set2)
差集 -
print(set1 - set2)
反交集
print(set1 ^ set2)
子集
set1 =
set2 =
# 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: 嵌套的可变的数据类型不是同一个 。
今日总结
- id is == 三个方法要会用,知道是做什么的。
- 回答的时候一定要分清楚:同一个代码块下适用一个缓存机制。不同的代码块下适用另一个缓存机制(小数据池)
- 小数据池:数字的范围是-5~256.
- 缓存机制的优点:提升性能,节省内存。
- 集合:列表去重,关系测试。
- 深浅copy:理解浅copy,深浅copy,课上练习题整明白。
05 预习内容
- 数据类型的补充以及编码的进阶:https://www.cnblogs.com/jin-xin/articles/10577131.html

浙公网安备 33010602011771号