小数据池
== 判断两个值是否相等
-
is -- 是,判断两边的内存地址是否相同
a=10 b=10 print(a is b)
id() -- 查看内存地址
代码块
-
一个py文件,一个函数,一个模块,终端中每一行都是代码块
int,str,bool
-
int: -5~正无穷
a=1000 b=1000 print(id(a),id(b)) print(a,b)
-
str:
- 定义字符串的时候可以任意,
- 字符串(字母,数字)作乘法时字符串长度不能超过20
- python3.7以上版本为<=4096
- 特殊符号(中文,符号)进行乘法时只能乘1或者乘0
-
bool
- True
- False
小数据池与代码块同在的情况下先执行代码块
驻留机制:节省内存空间,提升效率(减少了开辟空间和销毁空间的耗时)
小数据池
- int,str,bool
- int:-5~256
- str:
- 只支持字母,数字;长度任意符合驻留机制
- 字符串进行乘法时总长度不能超过20
- 特殊符号进行乘法时只能乘0
深浅拷贝
- 以后尽量避免
- 面试必问
赋值
a=[1,2,3,4] b=a print(id(a),id(b))
浅拷贝
赋值:将多个变量名指向同一个内存地址
copy -- 拷贝
-
(壳是另开的,馕是一样的)
a=[1,2,3,4,5] b=a.copy() print(id(a[0])) print(id(b[0]))
a=[1,2,3,4,5] b=a[:] #切片 浅拷贝 print(id(a[-1][0])) print(id(b[-1])[0])
a=[1,2,3,[4,5]] b=a[:]
-
浅拷贝
- 只拷贝第一层元素的地址,修改时只有修改第一层的时候源数据不进行改变
- 给可变数据类型添加的时候源数据会受影响
- 可变数据类型可以修改添加,不可变类型只能修改
深拷贝
import copy -- 导入copy模块
import copy a=[1,2,3,[4,5],6] b=copy.deepcopy(a)
深拷贝:不可变数据类型共用,可变数据类型新开辟一个空间(无论一方怎么改,另一方都不会改变)
集合
- Python中数据类型之一,无序,可变,天然去重
- 集合 -- set
-
s=set()
:空集合 - 集合就是一个没有值的字典(元素唯一,不可变)
-
集合方法
增加
- s.add()
- s,update(‘alex) -- 迭代添加
- print(set('alex')) -- 迭代添加
删除
- s.remove() -- 通过元素删除
- s.clear() -- 清空
- s.pop() -- 随机删除(最小的)
改
- 先删后加
查
- for循环
其他操作
- 减法:差集
- &:交集
- |(管道符):并集
- ^:反交集
>:判断是否子集
-
print(frozenset({1,2,3,4}))
冻结集合(使集合不可变)