1 今日内容大纲
1.is == id的用法
2.代码块
3.代码块下的缓存机制
4.总结
5.集合
6.深浅copy
2昨日回顾
- 字典初识
- 查询速度快,{'name':'太白'},存储大量的关联型数据
- 键:必须是不可变的数据类型(int,str,bool,tuple)唯一的
- 值:任意数据类型,对象
- 字典3.5x之前是无序的,3.6x按照初识时的顺序排列,3.7之后有序
- 增删改查
- 增:setdefualt(),dic['age'] = 18
- 删:pop键(可以设置返回值),clear清空,del dic['name']
- 改:dic['name'] = 'xiao'
- 查:dic['name'], dic.get('name')
- 三种特殊:dic.keys(), dic.values(), dic.items()
- 字典的嵌套
3具体内容
-
id is ==
#id 内存地址 i = 100 s = 'alex' print(di(1),id(s)) #==比较两边的值是否相等 l1 = [1,2,3] l2 = [1,2,3] print(l1 == l2) s1 = 'alex' s2 = 'alex' print(s1 == s2) #is 判断的是内存地址是否相同 #可变类型,不可变类型 #id相同,值一定相同 #值相同,id不一定相同 l1 = [1,2,3] l2 = [1,2,3] print(id(l1),id(l2))
-
代码块
- 代码块:我门所以的代码都需要依赖代码块执行
- 一个文件就是一个代码块
- 交互式命令下一行就是一个代码块
-
两个机制:同一个代码块下,有一个机制;不同代码块,遵循另一个机制‘
-
同一个代码块下的缓存机制
- 前提条件:同一个代码块
- 适用的对象:所有的数字,bool,几乎所有的字符串
- 优点:提升性能,节省内存
-
不同代码块下的缓存机制:小数据池
- 前提条件:不同代码块内
- 适用的对象:int bool str
- 具体细则:-5~245数字,bool,满足规则的字符串
- 优点:提升性能,节省内存
l1 = 1000 l2 = 1000 print(id(l1),id(l2)) print(li is l2) s1 = [1,2,3] s2 = [1,2,3] print(id(s1),id(s2)) print(s1 is s2)
-
-
总结
- 答
- 分同一个代码块下使用一个缓存机制,不同的的代码块使用另一个缓存机制(小数据池)
- 小数据池的范围是:-5~256
- 缓存机制的优点:提升性能,节省内存
- 答
-
集合
- python基础数据类型之:集合set。容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合时无序的。{}
- 集合的作用
- 列表的去重
- 关系测试:交集,并集,差集,...
- pass
#集合的创建
set1 = set({1,2,'name',False})
set1 = {1,2,'金星','alex'}
print(set1)
#空集合
print({},type({}))#空字典
set1 = set()
print(set1)
#集合的有效性测试
set1 = {[1,2,3],5,'alex'}
print(set1)
set1 = {{'name':'alex'},234}
print(set1)
# 集合的增删改查
set1 = {'太白','男神','alex','金星'}
#增
#add
set1.add('xx')
print(set1)
#update跌代着增加
set1.update('qwert')
print(set1)
#删
#remove 按照元素删除
set1.remove('太白')
print(set1)
#pop 随机删除
set1.pop()
print(set1)
#变形改值
set1.remove('xx')
set1.add('vv')
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}
print(set1 < set2)
#超集
print(set2 > set1)
#列表的去重
lis = [1,2,3,4,4,4,5,5,1]
set1 = set(lis)
lis = list(set1)
print(lis)
# 用处:数据之间的关系;列表去重
- 深浅copy(考)
#赋值运算
l1 = [1,23,4,[543,222]]
l2 = l1
l1.append(8)
print(l1,l2)
#浅copy
l1 = [1,23,4,[543,222]]
l2 = l1.copy()
l1.append(66)
print(l1,id(l1),l2,id(l2))
l1[-1].append(66)
print(l1,id(l1),l2,id(l2))
l1[0] = 222
print(l1,id(l1),l2,id(l2))
#深copy
import copy
l1 = [1,2,3,[4,5,6]]
l2 = copy.deepcopy(l1)
print(l1,l2)
l1[-1].append(33)
print(l1,l2)
l1[0] =99
print(l1,l2)
#题
l1 = [1,2,3,[4,5]]
l2 = l1[:]
l1[-1].append(33)
print(l1,l2)
#浅copy:list dict:嵌套的可变的数据类型是同一个
#深copy:list dict:嵌套的可变的数据类型不是同一个
4今日总结
- id is ==的用法
- id 内存地址
- is
- == 判断数据值是否相等
- 缓存机制
- 同一个代码块下适用一个缓存机制;不同代码块下适用另一个缓存机制(小数据池)
- 小数据池的范围:-5~256
- 缓存机制的优点:提升性能,节省内存
- 集合:
- 作用
- 列表去重
- 关系测试
- 作用
- 深浅copy