python 长度queue_python:常见的数据结构

ca6d860cfb2e0285fd165297b7d20506.png

​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。线性数据结构分类:栈(stack)--先进后出、 队列(queue)-先进先出、双端队列(deque)、链表(LinkedList)。

常见的数据类型又分为:数字、字符串、元组、列表、字典、集合。

可变数据类型

    列表、字典、集合         不可哈希
不可变数据类型元组、数字、字符串         可哈希
可哈希对象是对象拥有__hash__(self)内置函数的对象。对于可哈希的对象执行这个函数将会返回一个整数。
可哈希对象判断相等的唯一条件就是两者 的哈希值相等。下面通过一个例子来说明:
tuple_a = (1, 2, 3)    # 元组a
dict_b = {"a": 1, "b": 2}    # 字典b
dict_c = {"b": 2, "a": 1}    # 字典c
print(tuple_a.__hash__)
print(dict_b.__hash__)
print(id(str(sorted(dict_b))))
print(id(str(sorted(dict_c))))
print(hash(str(sorted(dict_b))))
print(hash(str(sorted(dict_c))))
>>>    <method-wrapper '__hash__' of tuple object at 0x00000275A3DF6C18>>>>    None>>>    2704397351728
>>>    2704397351728
>>>    -589638267386482414
>>>    -589638267386482414我们可以输出结果中元组返回了一个对象的'__hash__'method,而字典返回的结果None;字典是不能hash的,
但是我们可以将字典转成字符串再进行hash,sorted是将字典进行排序,
返回的结果显示两者转成字符串后的id跟hash值都是一样的,间接的说明了字典b跟字典c也是相等的
(补充:sorted:适用于任何可迭代容器)

哈希有啥作用?

它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。Python 中基于hash的2个数据类型是dict and set , 之前说dict查询速度快,为何快? 说set天生去重,怎么做到的?其实都是利用了hash的特性,我们下面来剖析dict 为何查询速度超快,且不受dict大小影响 ?

解析:假设我要存14亿人的基本信息

data = {

"张三":[23742364782642342323234,28,"山东济南"],

"李四":[12124234232311214458271,25,"北京昌平"],

"王五":[23030293483727384383929,33,"山东济南"],

"赵六":[42302033030302482634674,28,"河北保定"],

... ...

}

dict 的每个key 都要先经过hash生成一段固定长度的hash值,假设生成的hash值如下dict会把这些数字按大小排序好放在一个列表里kd = [53, 67, 81, 99]

当我们想查找"赵六"的信息时, 会把“赵六”先hash, 得到99这个值,然后拿这个值去到kd列表里找,想象这个列表有14亿个值 ,如何快速找到99? 二分法就行 ,只要找到了99的位置,就可以定位到赵六对应的value的值了。 通过2分法查找,每次数据量都会少一半,这样查找最多31次(2**31=2147483648)就能从20亿信息里找到这个人的信息。当然 dict 真实的查找算法比这个还要复杂些, 我只是通过这个例子让大家理解下为何基于hash的数据类型查找速度会快很多。

set去重是因为每存一个值到set里时, 都要先经过hash,然后通过得出的这个hash值算出应该存在set里的哪个位置,存的时候会先检查那个位置上有没有值 ,有的话就对比是否相等,如果相等,则不再存储此值。 如果不相等(即为空),则把新值存在这。

a36a1d18a2689104e191ef2fca2c85db.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯java pdf转换成html,java pdf转换html代码

java pdf转换html代码[2021-02-03 00:56:42] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff1a…

tina中信号带宽_如何评测示波器带宽

示波器最重要的单一特性&#xff0c;即带宽在频率域提供范围标示。带宽以Hz衡量&#xff0c;根据频率决定信号范围&#xff0c;以便能精确显示及进行测试。带宽不足&#xff0c;则示波器将不能显示出实际信号的准确表现。例如&#xff0c;信号的幅度也许会不准确、边缘也许会不…

esc指令检查打印状态_【行业知识分享】八千字解读ESC系统

汽车电子稳定控制系统ESC(Electronic StabilityController)是一个主动安全控制系统&#xff0c;通过传感器监控车辆自身行驶状态&#xff0c;在车辆紧急躲避障碍物、转弯等容易出现不稳定状况时&#xff0c;以及在转向过度或转向不足情况下&#xff0c;利用动力系统干预及制动系…

c语言中文网 vc++6.0下载量_【新手必看】C语言开发环境,请查收!

C语言开发环境的选择&#xff0c;貌似是告诉我们&#xff0c;工欲善其事&#xff0c;必先利其器。01、Visual StudioVisual Studio&#xff08;简称 VS&#xff09;&#xff0c;它是 Windows 下的标准 IDE&#xff0c;VS系列为IDE&#xff08;集成开发环境&#xff09;&#xf…

hssfworkbook.write 生成文件 数据丢失_电脑文件丢失了,数据恢复我只用这一个软件!...

电脑使用久了&#xff0c;遇到硬盘数据丢失或者误删乃是常见之事。所以这样的事情发生之时&#xff0c;最重要的是找到一个明智的解决方法&#xff0c;切忌浮躁&#xff0c;一个不小心&#xff0c;可能造成更严重的后果。据不完全统计&#xff0c;当电脑文件丢失后&#xff0c;…

html如何让图片跟字体重叠,CSS设置图片与文字的间距

【实例介绍】CSS设置图片与文字的间距希望图片本身与文字有一定的距离只需要给标记添加margin属性即可。margin属性包括margin&#xff0e;top、margin-right&#xff0c;margin-bottom、margin—left、margin。属性margin可以用来同时设置图片的四边外边距&#xff0c;而其他的…

查看so库中是否有某个定义_论Linux ELF中动态库符号重定义利用 属性/Linker 做隐藏的手法...

假如libgetthree.so libgetseven.so , 同时这两个so内部都用了internal_do_calculation()函数&#xff0c;并且各自定义了自己的internal_do_calculation()的实现&#xff0c;你会想当然的认为他们各自不影响&#xff0c;libgetthree和libgetseven会分别用自己的internal_do_ca…

华为新系统鸿蒙能互通吗,「连接」万物的鸿蒙,能拯救华为手机吗?

为 IoT 而生的鸿蒙操作系统&#xff0c;其优势与特点几乎都是围绕「万物互联」展开的。在曝光两年之后&#xff0c;华为的鸿蒙系统终于正式和用户见面了。6 月 2 日&#xff0c;华为鸿蒙操作系统及华为全场景新品发布会开启&#xff0c;正式推出 HarmonyOS 2.0&#xff0c;并发…

dw中html颜色的设置颜色代码,Dreamweaver 如何编辑字体大小颜色

以下为学做网站论坛关于“Dreamweaver 如何编辑字体大小颜色”讲解视频教程。dreamweaver是个可视化的软件&#xff0c;你直接选中你要更改的设置&#xff0c;在编辑器中直接就可以更改了。或是用CSS也可以设置你说的那些内容字体大小、颜色样式。dreamweaver编辑字体大小、颜色…

html 图片position,【图解CSS#Position】

关于CSS position&#xff0c;来自MDN的描述&#xff1a;CSS position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left 属性则决定了该元素的最终位置。先看一个图片&#xff1a;child没设置position的样式代码如下&#xff1a;child1-1child1-2child1-3chi…

佳能g3800故障灯说明书_佳能打印机故障如何维修 佳能打印机故障维修方法【介绍】...

在现代办公中是离不开打印机的&#xff0c;一些办公文件都是需要用它来打印的&#xff0c;也因此在办公中的地位是很重要的。也正因此它要是出现了故障&#xff0c;会给我们带来很大的麻烦&#xff0c;很是影响工作进度。佳能是很知名的&#xff0c;即使是这样&#xff0c;它在…

ll微信2下载安装_【兰苑文学】:陈振 ll黄金槐

作者简介陈振&#xff0c;新余市作协会员&#xff0c;江西省优秀乡村教师&#xff0c;中国网络诗歌学会会员。作品见于《诗选刊》《诗歌月刊》《诗潮》《鸭绿江》《诗人》《作家报》《长江诗歌》《海口日报》印尼《千岛日报》和《2018江西诗歌年选》《中国民间短诗精选》《中国…

无法扩展该卷 因为群集的数量将超过文件系统_浏览器将支持Python项目!Mozilla发布Pyodide...

作者&#xff5c;Michael Droettboom 编译&#xff5c;王强、覃云 近日&#xff0c;Mozilla 发布了一个实验项目 Pyodide&#xff0c;旨在浏览器内运行一个完整的 Python 数据科学堆栈。链接&#xff1a;https://github.com/iodide-project/pyodide/Pyodide 的创意起源于 Mozil…

华锋e路航x10升级工具_万商云集:疫情下火爆的电子合同,背后是企业数字化升级的必然...

近年来&#xff0c;数字经济快速发展成为中国经济发展的新动能&#xff0c;作为企业数字化转型中非常重要的一环&#xff0c;电子合同也随着产业数字化程度的加深快速渗透到各行各业&#xff0c;万商云集早在去年年底就已经正式拥抱电子合同&#xff0c;助力客户实现数字化升级…

edge播放视频HTML5黑屏,Win10 edge浏览器播放视频黑屏解决方法

Edge看不了视频怎么办呢? 出现这样的问题是由于Edge浏览器中需要点击允许才能看视频&#xff0c;但如果不弹出提示窗口我们就无法正常观看视频&#xff0c;所以当我们遇到这样的情况可以按下面方法进行操作!Edge看不了视频解决步骤&#xff1a;1、按下winR 组合键打开运行&…

@async 如何返回list_图解 Await 和 Async

原文链接&#xff1a;Await and Async Explained with Diagrams and Examples文章目录简介Promise问题&#xff1a;组合 PromiseAsync 函数Await错误处理讨论简介JavaScript ES7中的 async/await 使得协调异步 promise 变得更容易。如果你需要从多个数据库或 API 异步获取数据&…

求一个向量变换为另一个向量的矩阵_OpenGL里旋转等变换矩阵为什么是4x4的矩阵...

OpenGL ES 的很多教程里都会有这样一个例子来讲解纹理&#xff1a;将一张图片作为纹理显示在屏幕上。因为纹理坐标和实际屏幕显示的坐标不一样&#xff0c;把图片渲染在屏幕上后&#xff0c;图片是上下颠倒的。一个解决方法是对当前的顶点坐标&#xff0c;乘以绕 z 轴旋转180度…

白鹭时代与html5关系,白鹭时代观点:HTML5行业将进入红利收割期

2016年&#xff0c;H5产业风风火火&#xff0c;各种引人注目。最大成果无疑是游戏《传奇世界H5》月流水破了3000万&#xff0c;引起整个行业巨大震动&#xff0c;同时&#xff0c;也标志着H5重度游戏时代来临。国内最大的HTML5移动技术与服务供应商白鹭时代认为&#xff0c;201…

boot定时任务开启和关闭 spring_Spring之定时任务实践

Java下的定时任务实现有Timer&#xff0c;Spring&#xff0c;QuartZ等&#xff0c;这里我们介绍Spring中定时任务的应用&#xff0c;其通过 Scheduled 注解即可轻松实现概述Spring 的定时任务可以支持各种形式的定时调度任务。其通过加在定时方法上的 Scheduled 注解来配置任务…

计算机怎么取消用户密码,怎么取消开机密码:计算机开机进入Windows时的开机密码怎么取消?...

优质回答 回答者&#xff1a;168长腿欧巴在电脑中的“用户账户”界面即可设置取消开机密码&#xff0c;具体操作请参照以下步骤。1、右键Win10系统的开始菜单&#xff0c;选择弹出菜单里的“运行”选项。2、然后在出现的运行对话框里输入命令“netplwiz”&#xff0c;点击确定。…