游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Python数据类型第2篇字典和集合的原理及应用

  目录
  一、集合1。定义个有元素的集合2。自动去重3。集合常用的五个方法
  二、集合和字典都是无序的
  三、字典和集合都是无序的,在内存中是怎么存储?1。为什么说字典和集合是无序的?2。字典查找值的过程3。Python里基础数据类型分为三大类4。为什么会出现散列冲突?
  四、可变和不可变元素:可哈希和不可哈希1。可变类型的数据不可进行哈希运算,不可变的数据类型可进行哈希运算2。集合为什么无序?3。散列类型为什么是无序的?
  五、性能分析
  字典,大家都用得特别多,花括号包起来的,一个键一个值构成一个元素。集合和字典的表达形式是一样的。
  字典和集合在Python中都是使用花括号进行表示的。一、集合1。定义个有元素的集合set1{1,2,3}
  集合和字典相比,集合里面只有值,没有键。2。自动去重
  集合有个比较强大的功能:自动去重。里面不会存在重复的元素,集合最常见的应用就是对列表去重。2。1把字典转换成集合,再转换回字典,它会真去重set1{1,2,3,3,3,4,4,4,4,4}print(set1)
  打印出来是集合,重复的元素自动过滤掉了。定义的时候,不管定义多少个重复元素,都自动过滤掉了。2。2用集合对列表去重li〔1,1,1,2,2,2,3,3,3〕利用集合对列表去重li2list(set(li))print(li2)
  首先把列表转换成一个集合,自动把里面的重复元素给去除掉了,再转换回列表。
  集合在Python中是用得比较少的数据类型。3。集合常用的五个方法
  add()添加元素update()更新元素remove()删除元素clear()清空里面所有的元素copy()复制元素
  集合,它里面的元素是无序的。可以修改,集合是可变类型的数据。3。1空集合中怎么添加元素?
  add()方法,每次可以往里面添加一个数据进去。seset()空集合集合添加数据se。add(qinghan)一次只能添加一个,所以只添加了一个qinghanprint(se)
  3。2删除用remove()
  集合可以添加也可以删除。删除用remove(),传入对应的元素就可以进行删除。
  集合还可以做交集、并集这样的操作,这个对我们用处不大。3。3update()更新元素
  跟字典的update()一样的。它是将一个集合更新到这个集合里面,可以往里面一次加入多个元素。
  通过这个方法:seset()空集合se。update({111,22,33,44})print(se)
  可以一次更新进去多个元素。
  看update的源码:
  接收的是不定量参数,可以传一个也可以传多个。
  可以往里面加元组、列表、字符串,但是一般用的时候选择用集合,将一个集合更新到原来的集合里面。3。4clear()清空元素
  还有个常用的方法:clear()清空里面所有的元素。3。5copy()复制元素copy()做一个复制的二、集合和字典都是无序的
  Python里面把它称作散列类型。
  Python更新到3。7之后,字典出现一个新的特性:3。7之前的字典是无序的。3。7之后字典中元素的顺序,它会按你依次添加的顺序进行保存。现在字典,里面的元素实际上是有序的。
  官方文档已声明:
  三、字典和集合都是无序的,在内存中是怎么存储?
  dict与set实现原理是一样的,都是将实际的值放到list中。
  唯一不同的在于hash函数操作的对象,对于dict,hash函数操作的是其key,而对于set是直接操作的它的元素。
  假设操作内容为x,其作为因变量,放入hash函数,通过运算后取list的余数,转化为一个list的下标,此下标位置对于set而言用来放其本身。
  而对于dict则是创建了两个list,一个list该下表放此key,另一个list中该下标对应的value。
  其中,我们把实现set的方式叫做HashSet,实现dict的方式叫做HashMapTable(注:map指的是通过Key来寻找value的过程)。1。为什么说字典和集合是无序的?1。1字典和集合底层都是存储在列表里面
  一个字典,在存储的时候,会拆分成2部分,会存在2个列表里面,一个列表存键,一个列表存值:
  字典存储时的拆分1。2怎么通过Key找到对应的Value值呢?
  字典在存储之前,做了个Hash操作:
  Hash操作如图,图片来自网络
  拿到字典的键,进行哈希操作。通过对应的哈希算法,然后得出一串数字。
  拿哈希出来的值除以内存分出来的列表的长度,得到余数。这个余数当成对应元素的下标。把键和值通过下标存在列表中对应的位置。1。3散列类型的存储过程
  散列类型的存储过程,图片来自网络
  散列类型的意思就是无序的。散列就是哈希。散列内部元素是无序的。
  刚开始内存分了12个格子存数据,哈希后,第一个元素得出的余数是6,有2个列表,会把键存在对应的列表里面,把值存在对应的6的位置。
  散列表存储数据很松散,不像列表完整得排过来的。散列表里面是分散存储的,会把对应的键存到一个散列表里面。
  查找字典中元素的时候,首先它会拿到你这个键,同样进行哈希运算。运算完毕后得出一个值,然后去散列表里面找对应的键。找到对应的键,然后比较下是不是这个键。
  字典哈希的是它的键,不是它的值。集合是哈希的它的值,所以集合里面的值是不可变类型的,不能有可变类型的值。2。字典查找值的过程
  字典查找值的过程
  散列值就是哈希值。拿到键名,进行哈希,哈希过后得到散列值。
  拿到散列值进行相应的运算,然后拿到表元。表元是在散列表中的一个序号。2。1第一种情况
  比如序号是6,看6里面存的这个键,跟你刚才输进来查找的那个键是不是一样的。
  如果是一样的,键相等,会返回表元里面对应的值,会给你找到你所存储的字典的值。
  如果它在这里没找到值的话,这个时候会抛出异常。(也就是字典通过键去找值,没找到的时候就会抛出错误。)2。2第二种情况散列冲突:
  每个元素哈希出来的结果是不一样的。如图,第一个元素计算出来是6,会找到散列表中第6个格子。第二个值,运算之后,如果得出来的也是个6,那么这个时候就会起散列冲突。解决散列冲突有二种方案:
  方案一:
  有散列冲突的时候,会对散列表进行扩容,扩容后进行重新排序。
  方案二:
  在后面再加个列表。这样的话,第一个元素计算出来是6,会找到散列表中第6个格子。
  第二个值,运算之后,如果得出来的也是个6,因为加了一个列表(这个列表可存储多个值),就不会起散列冲突了。
  以上是字典,散列类型底层存储。3。Python里基础数据类型分为三大类
  第一类,数值类型:1一个数只有单个元素,像这个1就是1。
  第二类,序列类型:字符串、列表、元组。
  第三类,散列类型:字典、集合。特征:内部元素是无序的。4。为什么会出现散列冲突?
  举个例子:
  这两个数据通过哈希,计算散列值,取余后拿到的余数,如果是一样的话,在储存值的时候,就会造成散列冲突。
  通过字典的键去哈希,把哈希值存在散列表里面。通过对应的键,然后找到列表中存储的对应元素的值。
  集合相对于列表比较简单一些。集合没有键和值,直接拿到集合里面的值进行哈希操作。四、可变和不可变元素:可哈希和不可哈希1。可变类型的数据不可进行哈希运算,不可变的数据类型可进行哈希运算。
  集合里面只能存储可哈希的对象。意思是集合里面只能存储不可变的数据类型。例如:set2{1,2,3,〔1,2〕}
  这个集合就报错了:
  因为列表是可变类型。可变类型是不能进行哈希运算的。
  数值类型、字符串、元组可以,列表、字典、集合不能作为元素储存在这个集合里面。
  集合里面的元素通过哈希操作算出对应值,放到散列表里面。2。集合为什么无序?
  因为散列表里面存储元素的时候是没有顺序的,散列表也是会不断变化的(会变化长度、调整元素位置的),所以说散列类型是无序的。3。散列类型为什么是无序的?
  通过哈希算法算了之后,然后存到对应的散列表里面,散列表里面数据存储是没有固定顺序的。五、性能分析
  字典最占用内存,其次是集合。然后是列表、元组。元组是占用内存最少的。但是查找元素的时候,集合是速度最快的,然后是字典。
  集合用起来不方便,如果知道哪个元素就好查找,但是不知道那个元素在哪里,就不方便从集合里去取那个元素。字典通过键取值,元组、列表通过下标。

散户逼空大战精彩绝伦,在Reddit上我们应该关注什么?2021年1月,历史上第一次发生了有趣的事情。社交媒体用户联合起来,开始关注华尔街最讨厌的公司。随后,GameStop、黑莓(Blackberry)和诺基亚(Nokia)等公司……最近1个多月,济南青岛3位老师的企业上市,中学老师财富超过1文丛树来源鲁商儒风3天前,7月6日,青岛一家名为德才股份的企业在上交所上市,敲响开市交易钟声的叶德才,是一位曾经的中学老师。今年以来,山东收获了约20家上市公……美团饿了么推新收费,小商户如何避免被多收冤枉钱?这两天,美团和饿了么对商家的佣金调整又有新动作,最大的调整是,商家每单的平台服务费(也就是我们俗称的佣金)被拆成了技术服务费和履约服务费两大块。其中,技术服务费(佣金)的构成,……取消校外培训机构,下一个造富行业来临据统计:仅2020年我国就增加了52万家校外培训机构,而且在资本的加持下,校外培训互联网,线上教育形成了标准化,高效率的模式,成为了资本的赚钱工具。为了获取市场占有率,在线教育……英特尔低端处理器疯狂降价至549元!搭配560主板内存超频4好吧,刚收到的I310105F处理器又降了20元,价格低至549元。同时降价的还有10100F处理器,价格是562元。你没看错!虽然10100是个弟弟,但是价格却不……他让女人们疯狂剁手,一把刷子年销千万一把化妆刷的数字化之旅。天下网商丁洁几天前,香港初代名媛章小蕙上线了一把定制版的白毛球01。这把售价405元、由日本熊野晃佑堂制造的粉底刷,上线一天便被售罄。……联发科助力打造差异化旗舰,天玑开放架构OV小米全球用随着5G在全球扩展,联发科作为行业翘楚,推出了天玑5G开放架构,助力终端厂商打造具备差异化体验的终端满足用户对于多维度性能的渴求。此解决方案一经推出便被一加、小米、vivo、r……这款车充通吃主流手机快充!双口屏显车充,45w大功率,快到飞在开车时一边使用导航一边用原厂USB接口为手机充电,到达目的地后拔掉数据线,手机提示电量不足朋友,此刻你是否感到绝望?很多人都觉得车上USB接口,直接插上充电不就可以了。……iOS15。0。2正式版发布,修复多项Bug最近,苹果方面发布了目前iOS系统中最新的版本iOS15。0。2版本,该版本也是整个iOS15版本中第二个子版本(上一个版本为iOS15。0。1)。距离上一个。0。1正式版本发……华为P50旗舰手机再次成为定义移动影像的经典之作全新一代影像旗舰华为P50系列正式发布,华为P系列创立之初的理想,就是把美学和摄影带给大众消费者。P系列始终保持着对品质、美学及摄影的热情和追求,每一款产品都代表着当时的移动影……IPX7防水耳机新选择DacomL05运动蓝牙耳机体验对于爱运动的我来说,去健身房必带的两样东西就是水杯和耳机,之前一直佩戴的是真无线蓝牙耳机,最近看到新来健身小伙伴在用Dacom大康的ATHLETEL05蓝牙运动耳机,询问其佩戴……超越瓦力那些替代人类完成脏乱差和繁重工作的机器人资本实验室今日创新观察聚焦前沿科技创新与传统产业升级李鑫短短十年间,机器人、人工智能、物联网等技术的快速发展正在让大规模自动化成为不可避免的现实。在此背景下,……
面向家庭和中小型企业的AI安全已经到来海康威视的AcuSense技术首次将人工智能安全的力量带给房主和中小型企业。这意味着这个重要市场的客户现在可以提高安全性并更快地响应事件,同时还可以节省时间并减少他们的工作量和……小金标加成,漫步者真无线圈铁降噪耳机深度体验优点:一是外观设计硬朗,和别的耳机风格不一样,有个性。二是耳机硬件配置强悍,包装配件用心,结合其898售价,和索尼WF1000XM4对比性价比还是挺高。三是佩戴舒适、牢固,防水……智享绿色U越生活,纽恩泰用技术实力加速双碳目标落地5月12日至14日,ISHCHINACIHE中国国际供热通风空调、卫生及舒适家居系统展览会(简称中国供热展)在中国国际展览中心(新馆)隆重举行。本次2021中国供热展重磅推出了……长城新车犹如下饺子,可惜大部分是换壳车,多生孩子真的好打架?哈弗H6的成功让长城毅然决然地选择在SUV领域内深耕,于是乎在2019年长城就彻底放弃了轿车业务,像吉利、长安、奇瑞都是两条腿走路,而自断一臂的长城显然要在SUV领域内投放更多……茶杯有黑乎乎的茶垢别抓狂,使用这2种日用品清洗,茶杯光亮如新喜欢喝茶的朋友,使用的茶杯时间长了,就会在杯壁上留下一层茶垢。尽管出自茶水,对人体健康并无害处,不过黑乎乎的一层,怎么看心情都不美丽。尤其是使用透明玻璃杯,浅色陶瓷杯的,更是感……独立站推广引流怎么做?你学废了吗今天这期主要是关于如何给独立站推广引流,新手老手都可以来看看!第一部分是基础部分,做好网站基础,suv优化以及关键字排步。先跟大家先普及一下叫seoSeo的中……营养早餐养生粥,烹茶炖汤易打理大宇养生壶测评1。前言感觉有一段时间了,都没能好好休息,以至于以前早餐都喜欢吃炒粉、炒面的我,也想试试一口清淡的。当然,我算不得一个勤快的人,闲暇时宁肯盘着点外卖,也不太乐意出门(我出……GalaxyA50开始获取Android11更新在向高端和各种中端智能手机推送Android11更新后,三星已开始将Android11更新推送到GalaxyA50。除了OneUI3。1,最新更新还带来了2021年3月的安全补……雷军强调小米11全球首发骁龙888,现货,现货,现货距离小米11发布还不到一周的时间,很多人对小米11也非常好奇,它到底有哪些特性呢?今天小米就给大家爆料了一些,当然雷军也是微博强调了一下重点。全球首发!我们知道小米11全……蓝厂首款自研芯片确认命名V1,vivo高管表示X70系列首发从之前的光刻机再到如今的芯片荒,芯片一词也愈加被人们所重视,而作为购入量排在前列的智能手机行业更是对其倍加重视。面对国内芯片行业起步晚,技术积累不足,再加上海外技术限制等多方面……住友制药向BehaVR提供2300万美元,针对焦虑抑郁研发V(映维网2021年10月22日)日本住友制药和美国VR医疗创企BehaVR日前宣布,双方将共同开发和商业化用于治疗社交焦虑障碍,广泛性焦虑障碍和重度抑郁症的VR数字治疗工具,并……大数据学习要英语好还是数学好?加入到大数据学习的人越来越多,很多人在学习大数据的时候都会面临这么一个问题学习大数据需要英语好还是数学好呢?其实这个问题很容易解答,需要英语基础也需要数学基础,但涉及的知识量不……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网