如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)的,因为这些数据结构内置了哈希值,每个可哈希的对象都内置了__hash__方法,所以可哈希的对象可以通过哈希值进行对比,也可以作为字典的键值和作为set函数的参数。所有python中所有不可改变的的对象(imutable objects)都是可哈希的,比如字符串,元组,也就是说可改变的容器如字典,列表不可哈希(unhashable)。我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的id()。

哈希(散列?whatever)是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。

转载于:https://www.cnblogs.com/sea-stream/p/10573034.html

什么是可哈希的(hashable)相关推荐

  1. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之中——实际应用

    上一节介绍了哈希表的原理与设计方法,这一节则直接python中现有的哈希表类型:哈希集合 set(集合)和哈希映射 dict(字典)来解决实际应用(刷题). 零.概念 在介绍实际应用之前,有一个概念我 ...

  2. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

  3. Python高手必读,做一个精通规则的玩家

    编程,其实和玩电子游戏有一些相似之处.你在玩不同游戏前,需要先学习每个游戏的不同规则,只有熟悉和灵活运用游戏规则,才更有可能在游戏中获胜. 而编程也是一样,不同编程语言同样有着不一样的"规则 ...

  4. 深入研究Python 世界的规则,我的薪资直接翻倍

    前言 编程,其实和玩电子游戏有一些相似之处.你在玩不同游戏前,需要先学习每个游戏的不同规则,只有熟悉和灵活运用游戏规则,才更有可能在游戏中获胜. 而编程也是一样,不同编程语言同样有着不一样的" ...

  5. python出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案. ...

  6. 第二章——Swift语言

    Swift是苹果于2014年推出的一种新语言.Swfit 将替换 Objective-C,成为 iOS 和 Mac 的推荐开发语言.在本章中,您将重点学习Swift的基础知识. 你不会学到所有的知识, ...

  7. pythonset是什么意思_Python 中 set 是什么?为何要是用它?

    原标题:Python 中 set 是什么?为何要是用它? Python 中 set 是什么?为何要是用它?Python 中 set 是什么?为何要是用它? Python Sets: What, Why ...

  8. python集合是什么意思_Python集合是什么,为什么应该使用以及如何使用?

    Python集合是什么,为什么应该使用以及如何使用?-1.jpg (34.56 KB, 下载次数: 0) 2018-7-30 18:07 上传 Python集合是什么,为什么应该使用以及如何使用?-2 ...

  9. 集合4:方法-仅适用于set

    目录 1. s.update(*others) 2. s.intersection_update(*others) 3. s.difference_update(*others) 4. s.symme ...

  10. 第十七周-day72-Python编程基础day04

    老男孩教育-张导博客:https://www.cnblogs.com/Neeo/articles/11204572.html 1.列表 资料连接:https://www.cnblogs.com/Nee ...

最新文章

  1. 重新更新了,账号都丢了,重新找回的
  2. Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
  3. 3.SFB标准版前端安装
  4. 使用.NET Core创建服务监视器应用程序
  5. 架构设计工作笔记002---微服务架构理论-扩展立方体
  6. 卷积神经网络的前世今生
  7. Numpy系列(六)常用的数组合并操作
  8. 【光学】基于matlab GUI光栅实验【含Matlab源码 1176期】
  9. 小榕密码管家xp 绿色
  10. yum指令安装失败,或导致图形界面黑屏如何解决
  11. Java实现斯皮尔曼相关系数(Spearman)及T检验
  12. pyecharts(9)-动态可视化-树形图-思维导图
  13. Java实现牛牛算法详解
  14. 记一次修复Mac和Win7双系统启动菜单的经历
  15. matlab 矩阵增加行,MATLAB 中 如何在矩阵中插入1行
  16. 美化版缤纷彩色文字广告代码文字+网站添加AD教程
  17. 无法获取目标服务器证书的SSL指纹--VMware VCSA
  18. linu系统初始化配置
  19. Leecode DFS深度优先搜索
  20. 蓝桥杯JAVA数列求和

热门文章

  1. php去掉 部分字符,输出,php如何去除某个字符
  2. 黑群晖 linux 修改参数,黑群晖 DS918+ 修改引导参数隐藏引导盘和数据盘
  3. html JS实现下拉菜单,vue.js怎么实现下拉框
  4. java爬虫框架_Python,爬虫开发的不二选择
  5. 钣金cad插件_ug,CAD,SolidWorks,钣金??????非标等设计
  6. delphi 获取webbrowser文本框id内数值_分布式 ID 生成策略
  7. git 安装_Windows系统Git安装教程(详解Git安装过程)
  8. iphone照片永久删除怎么恢复_微信数据怎么永久删除不被恢复?只删除聊天记录没用,打开这里彻底删除!...
  9. java的历史_Java的历史
  10. Node JS环境设置– Node.js安装