离散表(哈希表),深浅拷贝
离散表
-
-
不可重复的
-
key不能为可变数据类型
import hashlib m = hashlib.md5() # m.update(b'a') # 0cc175b9c0f1b6a831c399e269772661 # m.update(b'b') # 92eb5ffee6ae2fec3ad71c777531578f # m.update(b'c') # 4a8a08f09d37b73795649038408b5f33 # m.update(b'd') # 8277e0910d750195b448797616e091ad m.update(b'a') # 0cc175b9c0f1b6a831c399e269772661 print(m.hexdigest())
1. 首先对key做了哈希处理(能对所有数据类型都可以哈希处理):梅森旋转算法(生成伪随机数)--> 通过哈希处理对于每个key他都可以生成一个序列(永不重复,相同的东西进入哈希处理,结果相同)
2. 使用哈希函数对刚刚生成的序列(纯数字),对纯数字除9取余(0,1,2,3,4,5,6,7,8)
深浅拷贝
拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的
id不变值可变,即在原值的基础上修改,则为可变数据类型;值变id也变,即重新申请一个空间放入新值,则为不可变数据类型。
拷贝
当l2为l1的拷贝对象,l1变换,l2变化
当l2为l1的浅拷对象,l1内部不可变数据类型变化,l2不变;l1内部可变数据类型变化,l2变
深拷贝
当l2为l1的深拷贝对象,l1内部变化,l2不变