深浅copy,is和==区别,集合,列表的操作

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()
相关文章
相关标签/搜索