哈希 其实是随机存储的一种优化,先进行分类,然后查找时按照这个对象的分类去找。
哈希通过一次计算大幅度缩小查找范围,自然比从全部数据里查找速度要快。
比如你和我一样是个剁手族买书狂,家里书一大堆,如果书存放时不分类直接摆到书架上(数组存储),找某本书时可能需要脑袋从左往右从上往下转好几圈才能发现;如果存放时按照类别分开放,技术书、小说、文学等等分开(按照某种哈希函数计算),找书时只要从它对应的分类里找,自然省事多了。
来源链接:https://blog.csdn.net/u012835097/article/details/79407591
实例:(Python实现两数求和)
Hash算法的python实现
1 自定义哈希函数
自定义哈希函数通常可利用除留余数、移位、循环哈希、平方取中等方法。下面这个例子就是我自己定义的一个哈希函数,运用了取模运算和异或运算。
# 自定义哈希函数
def my_hash(x):
return (x/7)
print(my_hash(1)) ```
2 hash()函数
在python中有内置的哈希函数hash(),返回一个对象(数字、字符串,不能直接用于 list、set、dictionary)的哈希值。示例代码如下:
print(hash(1))
print(hash(1.0)) # 相同的数值,不同类型,哈希值是一样的
print(hash(“abc”))
print(hash(“hello world”))
在运行时发现了一个现象:相同字符串在同一次运行时的哈希值是相同的,但是不同次运行的哈希值不同。这是由于Python的字符串hash算法有一个启动时随机生成secret prefix/suffix的机制,存在随机化现象:对同一个字符串输入,不同解释器进程得到的hash结果可能不同。因此当需要做可重现可跨进程保持一致性的hash,需要用到hashlib模块。