离散表(哈希表),深浅拷贝

离散表

  1. 乱序

  2. 不可重复的

  3. 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不变

原文地址:https://www.cnblogs.com/fjn839199790/p/11610127.html