小数据池
- int: -5~256
- str:
- 字母,数字长度任意符合驻留机制
- 字符串进行乘法时总长度不能超过20
- 特殊符号进行乘法时只能乘以0
代码块:
一个py文件,一个函数,一个模块,终端中的每一行都是代码块
- int:-5~无穷大
- str:
- 定义字符串的时候可以是任意的
- 字符串(字母,数字)进行乘法时总长度不得超过20
- 特殊字符(中文,符号)进行乘法时乘以0或者1
- bool:
- True
- False
is是判断两边的内存地址是否相同
==判断两个值是否相等
代码块、小数据池同在的情况下先执行代码块。
驻留机制:节省内存空间,提升效率(减少了开辟空间和销毁空间的耗时)
集合
集合是python中的数据类型之一
定义方式:set
- 集合就是一个没有值的字典
字典的值:唯一,不可变
集合:无序,可变
集合天然去重
# s = {1,23,4,2,1,2,3,1} print(s) 输出结果:{1, 2, 3, 4, 23}
# 面试题: lst = [1,223,1,1,2,31,231,22,12,3,14,12,3] print(list(set(lst))) 输出结果:[1, 2, 223, 3, 231, 12, 14, 22, 31]
s = {} #空字典
s = set() #空集合
增:
s = set() s.add("alex") #直接添加, 输出结果为:{'alex'} s.update("wusir") #迭代添加, 输出结果为:{'r', 'i', 'w', 's', 'u'} set("wusir") #迭代添加, 输出结果为:set()
删
s = {100,0.1,0.5,1,2,23,5,4} s.remove(4) # 通过元素删除 print(s) s.clear() # 清空 s.pop() # 随机删除 (最小的) print(s)
改:
- 先删后加
查:
- for 循环
其他操作:
- 差集--“-”
- 交集--“&”
- 并集--“|”-管道符
- 反交集--“^”
- 子集--“>”返回的是一个布尔值
- 父集(超集)--"<"返回的是一个布尔值
- 冻结集合:frozenset()
深浅拷贝
赋值:将多个变量指向一个同一个内存地址就是赋值
浅拷贝:
只拷贝第一层元素的地址,只有修改第一层的时候元数据不受影响
给可变数据类型进行添加的时候源数据会受影响
= 是修改,.append是添加
可变数据类型能够添加和修改,不可变数据类型只能修改
a = [1,2,3,[4,5]] b = a[:] # 浅拷贝 print(id(a[-1][0])) print(id(b[-1][0])) a.append(9) print(a) print(b)
a = [1,2,3,[4,5,6,[9,10]],67] b = a # 赋值 b = a[:] a[-2].append(10)#[1, 2, 3, [4, 5, 6, [9, 10], 10], 67] a[-2][-1].append(10)#[1, 2, 3, [4, 5, 6, [9, 10, 10]], 67] print(b)
深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个空间
# import copy # 导入 copy模块 a = [1,2,3,[4,5],6] b = copy.deepcopy(a) print(id(a[-2]))#2812949845896 print(id(b[-2]))#2812949847304 print(a) print(b) print(a == b) #True print(id(a),id(b)) print(a is b) #False
可变数据类型:list(列表),dict(字典),set(集合)
不可变数据类型:int(整型),str(字符串),tuple(元祖),bool(布尔值)