Python完美散列函数 散列表python( 三 )


all(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
True
all(['a', 'b', '', 'd']) # 列表list , 存在一个为空的元素
False
all([0, 1,2, 3]) # 列表list,存在一个为0的元素
False
all(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0
True
all(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素
False
all((0, 1, 2, 3)) # 元组tuple , 存在一个为0的元素
False
all([]) # 空列表
True
all(()) # 空元组
Trueany函数正好和all函数相反:判断一个tuple或者list是否全为空,0,False 。如果全为空,0,False,则返回False;如果不全为空,则返回True 。
F-strings
在python3.6.2版本中,PEP 498提出一种新型字符串格式化机制,被称为 “字符串插值” 或者更常见的一种称呼是F-strings,F-strings提供了一种明确且方便的方式将python表达式嵌入到字符串中来进行格式化:
s1='Hello'
s2='World'
print(f'{s1} {s2}!')
# Hello World!在F-strings中我们也可以执行函数:
def power(x):
return x*x
x=4
print(f'{x} * {x} = {power(x)}')
# 4 * 4 = 16而且F-strings的运行速度很快,比传统的%-string和str.format()这两种格式化方法都快得多 , 书写起来也更加简单 。
本文主要讲解了python几种冷门但好用的函数,更多内容以后会陆陆续续更新~
python之哈希算法哈希(Hash)算法:`hash(object)`
哈希算法将一个不定长的输入Python完美散列函数,通过散列函数变换成一个定长的输出,即散列值 。是一种信息摘要算法 。对象的hash值比原对象拥有更低的内存复杂度 。
它不同于加密 。哈希(hash)是将目标文本转换成具有相同长度的,不可逆的杂凑字符串,而加密则是将文本转换为具有相同长度的,可逆的密文 。
哈希(hash)算法是不可逆的,只能由输入产生输出,不能由输出产生输入 。而加密则是可逆的 。即可以从输入产生输出,也可以反过来从输出推出输入 。
对于hash算法,不同的数据应该生成不同的哈希值 。如果两个不同的数据经过Hash函数计算得到的Hash值一样 。就称为哈希碰撞(collision) 。哈希碰撞无法被完全避免 。只能降低发生概率 。
好的hash函数会导致最少的hash碰撞 。
*
可哈希性(hashable):
可哈希的数据类型为不可变的数据结构(如字符串srt,元组tuple,对象集objects等) 。这种数据被称为可哈希性 。
不可哈希性:
不可哈希的数据类型,为可变的数据结构(如字典dict , 列表list和集合set等) 。
如果对可变的对象进行哈希处理,则每次对象更新时 , 都需要更新哈希表 。这样Python完美散列函数我们则需要将对象移至不同的数据集,这种操作会使花费过大 。
因此设定不能对可变的对象进行hash处理 。
**
**
Python3.x添加Python完美散列函数了hash算法的随机性,以提高安全性,因此对于每个新的python调用,同样的数据源生成的结果都将不同 。
哈希方法有(MD5, SHA1, SHA256与SHA512等) 。常用的有SH256与SHA512 。MD5与SHA1不再常用 。
- MDH5 (不常用)
- SHA1 (不常用)
- SHA256 (常用)
- SHA512 (常用)
一种局部敏感的hash算法,它产生的签名在一定程度上可以表征原内容的相似度 。
可以被用来比较文本的相似度 。
安装simhash:
Pip3 install simhash
感知哈希算法(perceptual Hash Algorithm) 。用于检测图像和视频的差异 。
安装Imagehash:
pip3 install Imagehash

推荐阅读