今日内容
-
小数据池
-
深浅拷贝
-
集合
小数据池
-
== is id
== 判断两个值是否相等
is --- 是 判断两个值的内存地址是否相等
-
代码块中有自己的内存空间:int ,str ,bool
int:-2~正无穷
a = -6
b = -6
print(a is b)
a = 1000
b = 1000
print(id(a), id(b))
print(a is b)
str:
-
字符串:
-
定义字符串的时候是任意的
-
字符串(字符和数字)进行乘法时总长度不超过20
-
特殊符号(中文,符号)进行乘法的 时候乘以0 或 1
-
bool:
True,False
小地址池 -- int,str , bool
int:-5~ 256
str:
-
字母,数字长度任意
-
字符串进行乘法的时候总长度不能超过20
-
特殊符号进行乘法的时候只能乘 0
驻留机制:节省内存空间,提升效率(减少了开辟空间和销毁空间的耗时)
深浅拷贝
赋值, =
a = [1,2,3,4]
b = a
print(id(a),id(b))
print(a is b)
# a和b的内存地址一样,任何一个改,其他的改都改
浅拷贝
# 在列表的元素中,元素是列表的情况下,拷贝的是内存地址
# 当内部的元素发生改变时,拷贝的列表和原列表都发生改变
a = [1,2,3,[4,5]]
b = a[:]
# 浅拷贝a[-1].append(6)
print(b)
深拷贝
import copy # 导入 copy模块
a = [1,2,3,[4,5],6]
b = copy.deepcopy(a)
print(id(a[-2]))
print(id(b[-2]))
print(a)
print(b)
print(a == b)
print(id(a),id(b))
print(a is b)
# 不可变数据类型内存地址共用,可变数据类型新开辟一个空间 不管嵌套多深
集合
集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重
集合 -- set
s = {1,2,3,4}
-
集合就是一个没有值得字典,无序,可变;
-
天然集合去重
s = {1,1,2,3,4,1,1,1,1}
s = {} # 空字典
s1 = set() # 空集合
print(type(s1))
print(type(s))
集合的增:
s = set()
s.add('one')
s.update('two') #不建议使用
set('12345') #后面跟可迭代对象,只能迭代添加到空集合
集合的删:
s = {100, 200 ,500 , 10 , 0.1, 0.5}
s.remove(500) # 通过元素删除
s.clear() # 清空列表
s.pop() # 随机删除
集合的改
先删除,后添加,没有改的方法
集合的查
for循环
其他操作
s = {1, 24, 25, 48, 98, 56}
s_ = {1, 24, 25}
-
差集 -
print(s - s1)
print(s1 - s)
-
交集 &
print(s & s1)
-
并集 |
print(s | s_)
-
反交集 ^
print(s ^ s_)
-
子集 返回一个布尔值
print(s > s_)
-
父级
print(s_ > s )
-
冻结集合