关于python中的可哈希与不可哈希】的更多相关文章

在这篇之前,我又专门翻译过官方python3.3的可哈希对象文档,大家可以先参考一下: 实习小记-python中可哈希对象是个啥?what is hashable object in python? 预备知识: 在定义一个类时,如果我们需要改写该类的__eq__函数,特别要注意的是它将会变为不可哈希对象,也就是说如果你将它放到哈希集会报错误 >>> class A: ... def __init__(self, x): ... self.x = x ... def __eq__(self…
[转]实习小记-python中可哈希对象是个啥?what is hashable object in python? 废话不多说直接祭上python3.3x的文档:(原文链接) object.__hash__(self) Called by built-in function hash() and for operations on members of hashed collections including set, frozenset, and dict. __hash__() shoul…
Google 以图搜图的原理,其中的获取图片 hash 值的方法就是 AHash. 每张图片都可以通过某种算法得到一个 hash 值,称为图片指纹,两张指纹相近的图片可以认为是相似图片. 以图搜图的原理就是获取你上传的图片的指纹,和图库的图片指纹对比,查找出最相似的若干张图片展示. 除了以图搜图,图片哈希还可以做什么呢?例如图片检索,重复图片剔除,图片相似度比较等等. 这种哈希算法大概有 4 种: 1,差值哈希:DHash(Difference Hash)2,均值哈希:AHash(Average…
Python 中的哈希表:对字典的理解   有没有想过,Python中的字典为什么这么高效稳定.原因是他是建立在hash表上.了解Python中的hash表有助于更好的理解Python,因为Python中字典无处不在. hash 函数   哈希函数是一个可以将任意长度的数据块映射到固定长度的值,这个步骤称为hash,也就是散列. hash 函数有三个主要的特征: 计算迅速:计算一个数据块的hash值非常快 确定性:相同用字符串会产生相同的hash值 结果固定长度:不管输入的是,一个字节还是十个字…
可哈希:简要的说可哈希的数据类型,即不可变的数据结构(字符串str.元组tuple.对象集objects).它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,哈希对高效的算法和数据结构很重要. 不可哈希:不可哈希的数据类型,即可变的数据结构 (字典dict,列表list,集合set)…
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些"中级"的语言特性有着完善的文档,并且易于学习. 但是这里有个例外,那就是描述符.至少对于我来说,描述符是Python语言核心中困扰我时间最长的一个特性.这里有几点原因如下: 有关描述符的官方文档相当难懂,而且没有包含优秀的示例告诉你为什么需要编写描述符(我得为Raymond Hettinger辩护一…
python中有大量的内置模块,很多是属于特定开发的功能性模块,但collections是属于对基础数据的类型的补充模块,因此,在日常代码中使用频率更高一些,值得做个笔记,本文只做主要关键字介绍,详细的功能仍然要翻阅官方文档,地址如下: 英文站:https://docs.python.org/3.5/library/collections.html 中文站:http://python.usyiyi.cn/translate/python_352/library/collections.html#…
首先先来介绍一下md5 和 sha1 的概念 MD5 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法).128位长度.目前MD5是一种不可逆算法. 具有很高的安全性.它对应任何字符串都可以加密成一段唯一的固定长度的代码. SHA1 SHA1的全称是Secure Hash Algorithm(安全哈希算法) .SHA1基于MD5,加密后的数据长度更长, 它对长度小于264的输入,产生长度为160bit的散列值.比MD5多32位. 因此,比MD5更加安全,但SHA…
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可以使用关键字, 举例:a,a1,a_1 三.变量的赋值: 1. Python中的变量不需要声明,变量的赋值就是变量声明和 定义的过程: 2. 每个变量在使用前都必须赋值,变量赋值以后该变量才会 被创建: 3. 等号(=)用来给变量赋值,等号(=)运算符左边是一个 变量名,等号(=)运算符右边是存储在…
注意:对于我这个以前用c/c++的同学来说,可能一开始学习pyhon时有点不适应的,为什么呢?因为吧,python中,没有这玩意:{},也不用每句话才用分号分开的.python中通过缩进来分块的,一行占个句话就可以啦.下面的学习基于python2.7 from __future__import division 开始啦,边学习边作笔记 参考http://www.liaoxuefeng.com/,另外,还有其它的一些资料. 基本输入输出语句print和raw_input(): #输入语句: >>…
在python中几乎可以完成C++里所有面向对象编程的元素. 继承:python支持多继承: class Derived(base1, base2, base3): pass 多态:python中的所有实例方法都是virtual类型的 封装: 这个比较特殊,C++编程中一直强调得比较多的是:为了隐藏实现,所有的成员变量都要是private类型的,还有那些仅与实现相关的,不作为外部接口的方法都要定义成private类型的(或者protected).但是在python里面,并不存在真正的私有类型,根…
一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表的,以下是python列表的演示代码: >>> list1 = ['zhangxueyou','liudehua','wanglijuan','liming','shabie'] >>> list1 ['zhangxueyou', 'liudehua', 'wangliju…
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   "备忘"的定义 "memoization"(备忘)这个词是由Donald Michie在1968年提出的,它基于拉丁语单词"memorandum"(备忘录),意思是"被记住".虽然它和单词"memorization"在某种…
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表.字典和元组不能用作键 引用不存在的键会引发KeyError异常 1)字典 dict { } 空字典 { key1:value1,key2:value2,... } 字典在其它编程语言中又称作关联数组或散列表: 通过键实现元素存取:无序集合:可变类型容器,长度可变,异构,嵌套…
python中的数字类型工具 python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括: 1.整数与浮点型, 2.复数, 3.固定精度十进制数, 4.有理分数, 5.集合, 6.布尔类型 7.无穷的整数精度 8.各种数字内置函数及模块. 基本数字类型 python中提供了两种基本类型:整数(正整数金额负整数)和浮点数(注:带有小数部分的数字),其中python中我们可以使用多种进制的整数.并且整数可以用有无穷精度. 整数的表现形式以十进制数字字符串写法出现,浮点数带…
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或列表中的元素进行去重操作. 生成一个集合可以使用如下语法: 生成集合语法1: >>> l1=[1,2,3,4,5,6] >>> s1=set(l1) >>> print(s1) {1, 2, 3, 4, 5, 6} 在这里,使用工厂函数set创建集合,se…
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections模块 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict.list.set.tuple 的替代选择. Counter:字典的子类,提供了可哈希对象的计数功能 defaultdict:字典的子类,提供了一个工厂函数,为字典查询提供了默认值 OrderedDict:字典的子类,保留了…
简介 这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群里问了一些人,也说不出个所以然了,还是自己动手丰衣足 食,所以才有这篇和编辑分类格格不入的文章.来先看一下它们各自的定义. 定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value…
1 ,join  :  将对象以字符串的方式拼接成一个整体 for E :  li = ["李白", "是", "诗仙"]    s = "_".join(li) print(s) >>>李白_是_诗仙 还原li :  li2 = s.split("_") print(li2) >>>["李白", "是", "诗仙&quo…
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或列表中的元素进行去重操作. 一.创建一个集合 >>> L1=[1,2,3,3,4,5,] >>> s1=set(L1) >>> print(s1) {1, 2, 3, 4, 5, 6}…
一.字符串 在python中字符串是一种重要数据类型.其他数据类型分别为: 数字-number -------- int.long.float.complex这几种 字符串-string -------- "使用引号"引起来的都是字符串 元组-tuple ------------ (1,2)使用小括号引起来的元素,中间用逗号隔开. 注意如果元组(v1, )中只有一个值,一定记得要用逗号隔开,不然就无法识别为元组了 布尔值-bool --------- True及False 以上四个为P…
python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转 定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式转换? json(JavaScript Object Notation) json:是一种数据格式,是纯字符串.可以被解析成Python的dict或者其他形…
python中的这些坑,早看早避免. 说一说python中遇到的坑,躲坑看这一篇就够了 传递参数时候不要使用列表 def foo(num,age=[]): age.append(num) print("num",num) return age print(foo(1)) print(foo(2)) print(foo(3)) 上面的代码输出的结果并不是我们预期的那样,打印出三个数组[1],[2],[3]. 而是下面这样. num 1 [1] num 2 [1, 2] num 3 [1,…
一,字典的简单介绍概念: 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的, 1,已知的可哈希(不可变)的数据类型: int, str, tuple, bool 2,不可哈希(可变)的数据类型: list, dict, se…
本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式  利用空间换时间 可以进行快速的查找 key 是唯一的 不可变的类型 比如 str int 等  不能是list之类的可变类型 1.定义 定义一个字典 格式{key:value,key:value} a = {'a':80,'b':90,1:'a',2:[1,2]} print(a) 如果是定义如下 a = {'a':90,[1,2,3]:10} 则会…
定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式转换? json(JavaScript Object Notation) json:是一种数据格式,是纯字符串.可以被解析成Python的dict或者其他形式. dict:是一个完整的数据结构,是对Hash Table这一数据结构的一种实现,是一套从存储到提取都封装好了的方案.它使用内置的哈希函数来…
JSON有两种结构: “名称/值”对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array). 值的有序列表(An ordered list of values).在大部分语言中,它被理解为数组(array). eval与json.loads…
在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型. 可变数据类型    :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型.    总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变 2.数据类型分类 在python中数据…
本文将详细讲解collections模块中的所有类,和每个类中的方法,从源码和性能的角度剖析. 一个模块主要用来干嘛,有哪些类可以使用,看__init__.py就知道 '''This module implements specialized container datatypes providing alternatives to Python's general purpose built-in containers, dict, list, set, and tuple. * namedt…
YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. YAML在python语言中有PyYAML安装包. YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下: 1.大小写敏感 2.使用缩进表示层级关系 3.缩进时不允许使用Tab键,只允许使用空格. 4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 5.# 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一…