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

Python数据类型第1篇元组和列表的性能分析命名元组

  目录一、元组和列表1。元组和列表的性能分析2。为什么列表在Python中是最常用的呢?3。timeit里面有个Timer类4。timeit里面还有个直接用的timeit的方法,timeit。timeit()5。这2个方法有啥区别?二、命名元组三、命名元组有什么特点?一、元组和列表
  元组vs列表1。元组和列表的性能分析
  元组和列表用来存储数据,在元组和列表里面查询的时候,到底哪个更快呢?
  计算创建元组和列表所需的时间:ipython中使用timeit这个命令。
  计算时间模块介绍:importtimeittimeit。timeit
  可以用这个模块来测试函数的性能。安装ipythonpipinstallipython
  ipython是个交互环境,就跟我们输入Python进去是一样的。只不过它外面做了一层封装,比Python交互环境更好用一点。
  ipython里面有一个命令叫做timeit,后面可以跟一个Python表达式。
  例如定义一个列表在后面:
  敲完这行命令,返回了一行时间。这个是在内存中初始化一个列表,如图可以看到创建了一千万次,时间是48。4ns
  可以看出,创建一个元组比创建一个列表要快得多。
  元组的速度比列表要快3倍多。在内存里,当我们创建一个列表的时候,会划分一块区域出来,拿一块区域给列表来储存值。例如初始化,里面给它留了20个位置在这个列表里面储存值。
  列表占用内存如图
  当储存到一定程度,Python解释器检测到列表快要盛满了的时候,它会对列表做一个扩容。
  给扩容到200,当存储到150的时候,发现又快存储满了,又会给你继续扩容。
  随着数据的增多,底层会不断给这个列表扩容。
  初始化一个元组,同样也是一千万次,只需12。8ns
  元组是一个不可变的类型。
  比如定义的元组里面有3个元素,Python解释器在给它分内存的时候,就给它分了3个格子。
  这里面只能存3条数据,就这么大,所以元组占用的内存比列表要少。
  元组和列表内存占用对比图
  用一个列表存储50条数据和用一个元组存储50条数据,那么元组占用的内存要比列表小得多。2。为什么列表在Python中是最常用的呢?
  因为列表比较灵活,用列表的话,可以往里面不断得添加元素。如果元素固定的,那就用元组。3。timeit里面有个Timer类。
  来看看这个类的源码:
  timerdefaulttimer代表的是:创建一个列表、元组等,它要执行的一个次数。
  看源码,默认是一千万次:
  importtimeit这个模块可以用来做性能分析deffunc():foriinrange(10):print(i)这个对象有个方法叫做timeitrestimeit。Timer(func)。timeit(100)把这个func函数传进去,运行100次,然后返回的是个时间timeit。Timer(func)。timeit(100)中函数func是不需要加引号的,如果是字符串、列表这些需要加引号放进去print(res)
  可以看到运行100次需要的时间是:0。0043269999999999975
  4。timeit里面还有个直接用的timeit的方法,timeit。timeit()importtimeit这个模块可以用来做性能分析deffunc():foriinrange(10):print(i)这个对象有个方法叫做timeitrestimeit。Timer(func)。timeit(100)把这个func函数传进去,运行100次,然后返回的是个时间timeit。Timer(func)。timeit(100)中函数func是不需要加引号的,如果是字符串、列表这些需要加引号放进去print(res)res2timeit。timeit(〔1,2,3〕)print(res2)
  这个模块的作用:大家写的功能函数,可以用它测下功能函数的速度,执行大概要多久。
  默认是一千万次,结果如下:
  如果列表不加引号直接传是会报错的:
  提示不可被调用!5。这2个方法有啥区别?
  其实它们是一个东西。
  二、命名元组
  元组的性能是大大优于列表的。元组、列表在使用的时候,都是通过下标索引取值的。
  下标索引取值不太人性化,如果我知道数据储存在元组里面,但是我不知道它具体储存的下标位置。这个时候找这个元素,还得先把下标找出来,知道下标再去拿,这样很不方便。
  字典的话,这方面就比较有优势。数据是存储在字典里面的,只要通过键,就能把值找到。字典相对于元组和列表,有一定的优势和劣势。
  命名元组使用的时候可以让元组像字典一样去取值。
  例如,有个元组里面保存了3条数据:
  创建一个命名元组的话,需要用到Python的一个内置模块fromcollectionsimportnamedtuple
  importtimeit这个模块可以用来做性能分析fromcollectionsimportnamedtuplenamedtuple是个函数,创建命名元组可以通过这个函数来创建deffunc():foriinrange(10):print(i)这个对象有个方法叫做timeitrestimeit。Timer(func)。timeit(100)把这个func函数传进去,运行100次,然后返回的是个时间timeit。Timer(func)。timeit(100)中函数func是不需要加引号的,如果是字符串、列表这些需要加引号放进去print(res)res2timeit。timeit(〔1,2,3〕)print(res2)命名元组如果知道里面储存的具体位置,可以通过下标取值。例如tu〔0〕如果我不知道名字存储在哪里,通过下标去取值就不好取了命名元组可以使取值的时候像列表一样取studentinfonamedtuple(infotuple,〔name,age,gender〕)这个函数接收2个参数,第一个参数是创建命名元组的类型的名字;第二个参数的话,传一个列表列表里写创建命名元组的一个命名,例如第一个元素命名为name这个函数调用传了2个参数,返回出来一个对象。这个对象叫做studentinfo通过这个对象studentinfo创建命名元组tustudentinfo(qinghan,18,nv)print(tu)
  这个tu就是个命名元组。
  studentinfo是通过命名元组这个namedtuple函数创建命名元组类型:namedtuple(infotuple,〔name,age,gender〕)。
  然后返回出来一个对象studentinfo
  通过studentinfo这个对象传入对应的元组,定义元组的时候就通过这个对象把元素写进去,返回的就是命名元组。三、命名元组有什么特点?
  它取值的时候可以像字典一样取值,通过对应的键,找到对应的值。命名元组使用起来更像对象。
  这样用:命名元组。name
  这样就能找到name所对应的值:importtimeit这个模块可以用来做性能分析fromcollectionsimportnamedtuplenamedtuple是个函数,创建命名元组可以通过这个函数来创建deffunc():foriinrange(10):print(i)这个对象有个方法叫做timeitrestimeit。Timer(func)。timeit(100)把这个func函数传进去,运行100次,然后返回的是个时间timeit。Timer(func)。timeit(100)中函数func是不需要加引号的,如果是字符串、列表这些需要加引号放进去print(res)res2timeit。timeit(〔1,2,3〕)print(res2)命名元组如果知道里面储存的具体位置,可以通过下标取值。例如tu〔0〕如果我不知道名字存储在哪里,通过下标去取值就不好取了命名元组可以使取值的时候像列表一样取studentinfonamedtuple(infotuple,〔name,age,gender〕)这个函数接收2个参数,第一个参数是创建命名元组的类型的名字;第二个参数的话,传一个列表列表里写创建命名元组的一个命名,例如第一个元素命名为name这个函数调用传了2个参数,返回出来一个对象。这个对象叫做studentinfo通过这个对象studentinfo创建命名元组tustudentinfo(qinghan,18,nv)print(tu。name)
  设定命名元组类型的时候,它返回的这个对象它里面只包含了传进去的这几个名字。
  接下来,要创建命名元组的时候,元素和它一样多,名字和对应的元素的值是一一对应的,不能多,不能少。
  否则就会报错:
  print(type(tu))看下它的类型
  它返回的对象和类型名用的同一个名字。print(type(studentinfo))
  importtimeit这个模块可以用来做性能分析fromcollectionsimportnamedtuplenamedtuple是个函数,创建命名元组可以通过这个函数来创建deffunc():foriinrange(10):print(i)这个对象有个方法叫做timeitrestimeit。Timer(func)。timeit(100)把这个func函数传进去,运行100次,然后返回的是个时间timeit。Timer(func)。timeit(100)中函数func是不需要加引号的,如果是字符串、列表这些需要加引号放进去print(res)res2timeit。timeit(〔1,2,3〕)print(res2)命名元组如果知道里面储存的具体位置,可以通过下标取值。例如tu〔0〕如果我不知道名字存储在哪里,通过下标去取值就不好取了命名元组可以使取值的时候像列表一样取设定命名元组类型studentinfo是个类studentinfonamedtuple(studentinfo,〔name,age,gender〕)这个函数接收2个参数,第一个参数是创建命名元组的类型的名字;第二个参数的话,传一个列表列表里写创建命名元组的一个命名,例如第一个元素命名为name这个函数调用传了2个参数,返回出来一个对象。这个对象叫做studentinfo通过这个对象studentinfo创建命名元组tustudentinfo(qinghan,18,nv)print(tu。name)print(type(tu))看下它的类型print(type(studentinfo))因为studentinfo是个类,所以看studentinfo的type就是个type。随便看哪个类都是一样的。

大干皮本命散粉!这6款超好用!杜绝踩雷前天,有好多小可爱来问:大干皮有哪些好用的散粉?于是,阿宝去精心整理了6款超好用的干皮散粉,供大家参考,一起来看看呀01hr玫珂菲蜜粉对于大干皮来说真的超级赞……2022年A股市场看好新能源新能源汽车数字经济等成长性板块众所周知,投资主要看成长性,具有成长性的行业和企业值得投资者大力炒作。美国苹果公司因推出iPhone系统智能手机而名声大噪,市值从2007年的1千亿美元涨到2022年的3万美元……马云预言成笑话,京东有望取代华为成第一民企,阿里输在哪里?文Dong审核子扬校正知秋自从改革开放以来,中国的经济得到了空前的稳步发展,现如今我国的GDP已经跻身于世界第二。在中国经济高度发展的带动之下,我国的电商行业近年来……入手智能扫地机器人之前,这些扫地机器人干货必须要了解很多人都不想做家务活,所以在我们繁忙的时候,总是希望能有个任劳任怨的工具人来帮助我们就好了。而现在,这个愿望终于可以实现了给家里入手一款智能扫地机器人!家里有了扫地机器人……5G惠及智造除了工业物联网,触控显示行业也迎来机遇2019年12月4日,以智造之路5G先行为主题的(深圳)2019华南工业智造展览会(下称SMF2019),在深圳会展中心盛大开幕!(图片来源于网络侵删)在5G时代发……历代变化最大的Android12来啦!设计界面大翻新新功能报GoogleIO2021开发者大会正式登场,第一波介绍当然是跟大家最为相关的Android12啦!官方正式公开Android12的完整细节,并释出了Beta版供大众使用。这一代……请不要挑战汽车消费者的底线新能源汽车的领头羊特斯拉,因车主上海车展现场维权视频,一时被推上消费者关注和舆论的浪尖,并持续发酵,同时国家相关部门也相继介入,针对特斯拉的刹车失灵事件开展调查。而此次的主角是……历史上打仗战力最强的五个省,都是硬骨头!哪个是你的家乡?近代以来,中华民族饱受战火洗礼,其中有五个省份特别能打仗,他们的英勇让敌人胆寒,就连毛主席都时常将他们挂在嘴边,感叹他们的厉害,更有甚者认为有这五个省在,中国将永远不会亡国。这……7月手机性价比排行榜单出炉Redmi成最大赢家,欧加系表现亮8月13日,安兔兔发布了一份2021年7月份各价位手机性价比排行榜单,这份榜单是基于京东目前的在售机型进行整理的,大家可以来参考一下。毕竟马上就要到818电商大促销了,届时又是……尼康宽容度高佳能色彩好,你觉得哪个更重要?先说我的观点:在后期如此强大的今天,单纯的强调宽容度和颜色都是没有意义的。每个相机都有自己的优势和特点。总体来说,尼康的宽容度的确高,比如D850和Z7这样的机器,宽容度……华为新专利公示自主研发超IP68防水级别,有望用于自家旗舰要说防水做得较好的手机品牌,三星、索尼排前五不为过,毕竟他们也是有自家的IP68防水旗舰机。而国内如果要做IP68防水机器,成本会很高,利润降低是很多国内厂商不愿做的原因之一。……曾邀香港天王代言,销售额是安踏2倍,却被马云搞垮,创始人被抓曾经红极一时的品牌,邀请香港天王为其代言,甚至销售额都是安踏的2倍。但没想到的是,该品牌最终落幕的原因却与马云有关,这是为什么呢?邀香港天王代言,销售额是安踏2倍随着时代……
比特币重回4。4万美元后印度央行发出警告加密货币就像庞氏骗局自比特币上周末以来首次升至4。4万美元上方之际,印度央行一名高级官员向莫迪政府发出强烈警告,重申了对加密货币交易的担忧,并将虚拟货币比作庞氏骗局。智通财经APP获悉,印度……40亿的无人超市,遭受寒冬,终成黄粱一梦!新零售模式下的无人超市,获得了许多人的追捧,各行业老大都看中了其潜在的市场,并纷纷进行投资,如此一来线下的零售业获得了短暂的发展生机,随即便衍生出许多超市、生鲜、便利店,最后还……怎么看待iphoneXsmax的售价?这款手机怎么样?首先Xsmax这款手机绝对是苹果公司目前手机系列里最为优秀的一款,超强的处理器,顶级的屏幕,优秀的拍照,还有不错的续航,除了被吐槽的信号问题外,几乎是没有什么缺点的,而且放眼整……新能源车定义一、新能源汽车的分类1。电动汽车电动汽车包括纯电动汽车、新能源车定义,新能源汽车的定义和分类混合动力电动汽车和燃料电池电动汽车。纯电动汽车是指以电池为储能单元,以电……滨海县骑车去南通,路边的别墅连成片,204国道大变样2020年10月20日,多云。6月份从常州骑行到秦皇岛,回程时自行车放在老家滨海县城,人乘大巴车回常州,3个多月在常州一直霸占老伴的山地车,太不像话了,回老家把自己的车子……电源适配器出口澳大利亚SAA认证,充电器SAA认证问:什么是SAA认证?SAA认证是什么?答:SAA认证是澳大利亚认证(强制的安规认证)澳洲和新西兰是两个人口较稀少的国家,目前人口只有2300万人口,但消费能力非常强。被……计算机毕业设计之屌爆天springboot可视化旅游网站旅游开发技术前端layUIechartsthymeleaf后端springbootjpamysqlmaven运行界面计算机毕业设计计算机毕……联瑞揭秘新款100G以太网卡神秘面纱信息大爆炸时期,网络技术的更新换代呈现指数级增长,更高的带宽、更低的延迟性、更强劲的性能等各项技术指标是全球电子通讯厂商历来的追求,特别是在物联网、云计算、工业自动化、智慧城市……杨元庆宣布决定,是真心打破科技无国界,还是因为国家政策?联想,曾因如果人类失去联想,世界将会怎样风靡全球,在短时间内超越IBM、戴尔,成功登上世界第一大电脑厂商的宝座,至今依然是其他厂商膜拜的对象,仍未被超越,综合实力是不容小觑的,……林书豪发长文告别NBA,网友他是永远的华裔之光还记得之前林书豪宣布要前往NBA追梦的时候,大部分球迷对他是无限极支持的态度,虽然林书豪年纪不小了,但之前在NBA的经历还有在CBA赛季打出的精彩数据,都让人相信,他还有冲击N……自学java后都是怎么找的工作?我之前一直有一群志同道合的朋友一起学习,其中有一个小伙伴,真的就是通过自学进入了自己理想的公司,也获得还不错的收入,我给大家分享一下他是如何学习的吧!希望对通过自学java的方……华为28岁员工工资表曝光所有的厉害,都有迹可循之前,华为的一位前员工,曾在网上晒出自己的工资表。他的职位是销售总监,本科毕业后在华为工作了6年,后来离职。月薪最高的时候包括年终奖和股票分红就有18万,其他月份基……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网