小数据池: 缓存机制(驻留机制)
- ==(用于判断两边的内容是否相等)
- a=10
- b=10
- print(a==b)# == 用于判断两边的内容是否相等
- is(用于判断两边内存地址是否相等)
- a=10
- b=10
- print(a is b)
- # 输出 True
- # 小数据池总结
- #1, 数字范围:-5~256
- #2, 字符串:
- """
- 1, 同一代码下, 内容相同则内存地址相同
- 2, 乘法相乘总长度不能超过 20
- 3, 惩罚的时候中文, 特殊符号乘以 0
- """
- #3, 布尔型: 同一代码下, 内容相同则内存地址相同
- # 代码块: 一个文件, 一个函数, 一个类, 一个模块, 终端每一行代码都叫做代码块
- #1, 数字
- """
- 1, 同一代码下, 内容相同则内存地址相同
- 2, 数字相乘不能用浮点型
- 3, 数字的范围:-5~256
- """
- #2, 字符串
- """
- 1, 同一代码下, 内容相同则内存地址相同
- 2, 字符串相乘总长不能超过 20
- 3, 乘法的时候中文, 特殊字符相乘以 1 或 0
- """
- #3, 布尔型: 同一代码下, 相同内容则内存地址相同
3.9 深浅拷贝
赋值
- a=20# 开辟一个内存空间存放 20,a 指向这个内存地址
- b=a# 把 a 的值赋值给 b, 这时 b 指向存放 20 的内存地址
- print(id(a))
- print(id(b))
- # 结果为 1403154048 1403154048
浅拷贝
拷贝了最外围的对象本身, 内部的元素都只是拷贝了一个引用而已. 也就是, 把对象复制一遍, 但是该对象中引用其他对象我不复制
- import copy #导入 copy 模块
- a=[1,2,3,[4,5,6]]
- b=a.copy
- b[0]=5
- print(a)
- print(b)
- # 结果为:[1,2,3,[4,5,6]]
- #[5,2,3,[4,5,6]]
- b[-1][0]=9
- print(a)
- print(b)
- # 结果为:[1,2,3,[9,5,6]]
- #[1,2,3,[9,5,6]]
深拷贝
外围和内部元素都进行拷贝对象本身, 而不是引用. 也就是把对象复制一遍, 并且该对象中引用对象也复制
- import copy
- a=[1,2,3,[4,5,6]]
- b=copy.deepcopy(a)
- a[0]=7
- print(a)
- print(b)
- # 结果为:[7,2,3,[4,5,6]]
- #[7,2,3,[4,5,6]]
- a[-1][0]=9
- print(a)
- print(b)
- # 结果为:[1,2,3,[9,5,6]]
- #[1,2,3,[9,5,6]]
总结: 浅拷贝只是拷贝第一层元素, 第一层元素引用的元素不复制只是引用; 浅拷贝的时候, 只会开辟一个新的容器列表, 其他元素使用的都是源列表中的元素;
深拷贝: 拷贝第一层元素和第一层元素引用对象, 不可变数据进行公用, 可变的数据类型再次开辟空间
3.10 集合(set)
什么是集合?
可以理解成没有值的字典, 无序, 不支持索引
天然去重
定义集合
- s = {
- 1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4
- }
- print(s)
- # 结果为{
- False, 1, 32, 2, 4, 6, 12, (1, 2, 3), 'alex'
- }
集合的增, 删, 改, 查
增
- s={
- 1,2,3,4
- }
- s.add("67")# 只能添加一个
- print(s)
- # 结果为{
- 1,2,3,4,"67"
- }
- s={
- 1,2,3,4
- }
- s.update("今天")# 迭代添加
- print(s)
- # 结果为:{
- 1,2,3,4,"今","天"
- }
删
- s={
- 1,2,3,4
- }
- print(s.pop())# pop 有返回值 4
- print(s)#{
- 1,2,3
- }
- s={
- 1,2,3,4
- }
- s.remove(1)# 指定元素删除
- print(s)#{
- 2,3,4
- }
- s={
- 1,2,3,4
- }
- s.clear()# 清空 {
- }
改: 先删后改
查
- s={1,2,3,4}
- for x in s
- print(x)
其他操作:
- # s1 = {
- 1,2,3,4,5,6,7
- }
- # s2 = {
- 5,6,7,1
- }
- # print(s1 & s2) # 交集
- # print(s1 | s2) # 并集
- # print(s1 - s2) # 差集
- # print(s1 ^ s2) # 反交集
- # print(s1> s2) # 父集(超集)
- # print(s1 < s2) # 子集
- # print(frozenset(s1)) # 冻结集合 更不常用
- # dic = {
- frozenset(s1):1
- }
- # print(dic)
来源: http://www.bubuko.com/infodetail-3120684.html