is和== 与id的用法
== 比较的是两边的值是否相等
is 判断的内存地址是否相同
id 相同,值一定相同
值 相同,id不一定相同
简述pytho中的代码块
我们所有的代码都需要依赖于代码块执行,一个py文件就是一个代码块.交互式命令下一行就是一个代码块.
代码块的两个机制
同一代码块下有个一个机制.
- 机制内容---> int(float):任何数字在同一代码块下都会复用,str:几乎所有的字符串都会符合缓存机制,bool:True和False在字典中会以1,0方式存在,并且复用
- 目的(优点):节约内存,提升性能.
- 适用的对象:int,bool,str
- 具体细则:所有的数字,bool,几乎所有的字符串
不同代码块下,遵循另一个机制(小数据池)
- 机制内容 int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址,str字符串只含有大小写字母,数字,下划线,并且长度不过长时会驻留
- 目的(优点):节约内存,提升性能
- 适用的对象:int,bool,str
- 具体细则:-5~256的数字,bool,满足规则的字符串
集合
集合的作用
- 列表的去重
- 关系测试: 交集,并集,差级....
集合的创建
set()
注意:{}是空字典不是空集合
集合的操作
- add 增加
- update 迭代的增加
- remove 按照元素删
- pop 随机删除
- 变相改值: 删除后加入
- 交集:& 2个集合共有的
- 并集:| 2个集合所有的元素
- 差集:- 第一个集合有,第二个集合没有的
- 反交集:^ 除了两个集合共有的,其他元素组成的集合
子集,超集 包含和被包含的关系.被包含的为子集,包含的是超集
列表配合集合完成去重
将列表转化为集合则自动去重,再转化为列表即可
深浅copy
浅拷贝:在内存中开开辟一个新的空间,存放copy的对象(列表,字典但是里面的所有元素与被copy对象里面的元素共同一个)
python对深copy进行一个优化.将不可变的数据类型沿用同一个,可变类型创建一个新内存空间
深copy:嵌套的可变的数据类型不是同一个
使用方法
import copy --->引用copy模块
s=[1,2,3,4]
ss=s.copy()