小数据池
1.什么是小数据池
- 小数据池就是python中一种提高效率的方式,固定的数据类型使用同一个内存地址。
- 小数据池支持str字符串,int数字,bool布尔值。
2.小数据池是干嘛的:
- id() id是查看空间的内存地址,就是给一个假的内存地址来方便判断是否在统一地址中。
- 小数据池数字的支持范围在 -5 到 256
- 代码块:
- 一个文件,一个模块,一个函数,一个类都叫代码块,在cmd终端里每一行代码都叫做代码块
- 在python中是用字典的方式存储的。
- 一定要记住先执行代码块,不符合代码块的才会执行小数据池。
- is 和 的区别: is 判断两个内存地址是否相同。 判断等号两边的值是否相同。 如果is判断相同两边一定相同,判断相同则is不一定相同。
- 字符串:
- 字符做乘法的时候总长度不能超过20*
- 2.自定定义的都驻留*
- 3.乘数为1的时候 就是赋值*
- 4.python3.7 乘法的时候总长度不能超过4096*
集合
1.什么是集合。
- 集合就是一个没有值的字典,唯一,无序的,元素要求可哈希的也就是不可变的。集合是无序的,集合是可变的。
2.集合怎么用。
-
增加:
- 变量 . update("添加的内容") 迭代的添加
- 变量 . add ("添加的内容")
-
删除:
- 变量 . pop() 随机删除,其实就是删除第一个元素
- 变量 . remove() 通过元素删除
- 变量 . clear() 清空
- del 变量 删除整个集合
-
改:删除之后再添加就是改了。
-
查:直接使用for循环来查看。
-
特点是天然去重 一行代码去重 print(list(set(li)))
-
其他的操作:s1 = {1,2,3,4,5,6,7}
s2 = {3,4,5,6}
-
print(s1 - s2) #差集
-
print(s1 | s2) #并集 (合集)
-
print(s1 & s2) #交集
-
print(s1 ^ s2) #对称差集 -- 反交集
-
print(s1 > s2) # 超集 -- 父集
-
print(s1 < s2) # 子集
# 冻结集合(可变 转换成 不可变) -- 更不常用 # f_s = frozenset({1,2,3,4,5}) # # dic = {f_s:"1"} # # print(dic)
-
深浅拷贝
1.浅拷贝:copy
-
只拷贝第一层。
-
浅拷贝会创建一个新的列表(容器),新创建的列表中的元素和原列表的元素用的是同一个内存空间。
-
# 浅拷贝的时候只拷贝第一层元素 # 浅拷贝在修改第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变 # 浅拷贝在替换第一层元素(可变数据类型)的时候,拷贝出来的新列表不进行改变 # 浅拷贝在修改第一层元素中的元素(第二层)的时候,拷贝出来的新列表进行改变
-
# 赋值:就是公用一个内存地址,改变任何一个值,都会发生改变。 # 浅拷贝:就是拷贝第一层元素,改变和替换第一层元素,新拷贝出来的列表不进行改变。改变第一层元素中的元素都发生改变。 # 深拷贝:不可变的数据类型和源列表指向的是同一个内存空间,可变的数据类型开辟一个新的内存空间,就是随便改和我没关系。
2.深拷贝:import copy
-
不可变的数据类型和原列表指向同一个空间。
-
可变的数据会创建一个新的空间。
-
就是随便改,想干什么干什么互不影响。
-
#深拷贝 import copy lst = [1, 2, 3, [5, 6, 7]] lst1 = copy.deepcopy(lst) lst1[-1].append(8) print(lst) print(lst1)
数据类型的补充
- . capitalize() 首字母大写。
- . title() 每一个单词的首字母大写。
- . count("a") 统计出现的次数。
- . swapcase() 大小写转换。
- . find() 查找,找不到就返回-1.
- . index() 查找,找不到就直接报错。
- . reverse() 反转。
- . sort() 升序。
- . sort(recerse=True) 降序。
- 总结:
- 字符串转成数字必须是十进制的数字。
- 数字转成字符串可以直接转换。
- 列表转成字符串用 ” “. join() 可迭代的对象中不能出现数字
- 字符串转成列表用分割split
- 除了字典,其他的数据类型之间可以直接相互转换。
- 有序的:str,int,bool,list,tuple。
- 无序的:dict,set。
- 可变的:list,dict,set。
- 不可变的:str,int,bool,tuple。
- 访问的方式:
- 直接访问:int,bool,set。
- 顺序访问:list,tuple,str。
- 通过键访问:dict。
- 坑:
- 循环删除索引的时候,要倒叙删除,否则会报错,或者结果不正确。
- 循环添加列表元素的时候,会形成死循环。
- 字典在循环的时候不能改变字典的大小
- 先定义一个列表,循环列表 列表删除字典。
- 编码的进阶:
- encode() 编码
- decode() 解码
- 用什么编码集编码,就用什么编码集解码。