第六章
1、 == is id
- ==判断两个值是否相等
- is :是 判断的是两边的内存地址是否相同
- id()求地址
2、代码块:一个py文件,一个函数,一个模块,终端中的每一行都是代码块
(代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟空间的时候,它会先去检测我们定义的这个值在空间中有没有开辟,如果没有开辟就进行开辟,如果在内存中开辟过就使用同一个)
- 整形(int) :-5~正无穷
- 字符串(str):
- 定义字符串的时候可以是任意的
- 字符串(字母,数字)进行乘法时总长不超过20
- 特殊字符(中文,符号)进行乘法的时候乘以0或1
- 布尔值:True False
3、小数据池:
整形(int):
字符串(str):
- 字母,数字长度任意符合驻留机制
- 字符串进行乘法的时候总长度不能超过20
- 特殊字符进行乘法的时候只能乘0
布尔值:True False
小数据池,代码块同在的情况下先执行代码块
(python考虑到我们会经常定义一些值,需要开辟空间和销毁空间,它底层就维护了一个小数据池,这个小数据就是规定一个区间使用的是同一个内存地址
在py中默认先执行代码块;在终端中执行小数据池
4、驻留机制:节省空间,提升效率(减少了开辟空间和销毁空间的耗时)
5、集合:
集合是python中的数据类型之一,是无序的,可变的且唯一
集合就是一个没有值的字典
集合天然去重
面试题:用一行代码去重
lst = [1,223,1,1,2,31,231,22,12,3,14,12,3]print(list(set(lst))
定义一个空集合: set1 = set{}
定义一个空字典s = {}
集合的增:
集合名.add()
集合名.update() 迭代添加
集合的删:
集合名.remove() 通过元素删除
集合名.clear() 清空
集合名.pop() 随意删除(一般情况下是最小的)
集合的改:
先删后改
集合的查:
for 循环
6、其他操作:
- 差集 -
- 交集 &
- 并集 |
- 反交集 ^
- 子集>: 返回的是布尔值
- 父集(超级)<:
- 冻结集合 frozenset
7、深浅拷贝
以后尽量避免,但面试必问
赋值; = 将多个变量指向一个同一个内存地址就是赋值
浅拷贝
只拷贝第一层元素的地址,只有修改第一层的时候源数据不受影响,给可变的数据类型进行添加的时候源数据会受影响
= 是 修改 .append 是添加
可变数据类型够修改和添加,不可变数据类型只能修改
(当拷贝完后,如果对第一层进行修改(就会改变其对应的地址)则就不会对前一个发生影响)
深拷贝
不可变数据类型内存地址共用,可变数据类型新开辟一个空间
import copy
b = copy.deepcopya(a)
深拷贝中可变数据类型新开辟一个空间的原因是防止原可变数据类型发生紊乱