安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

抬抬小手学Python列表推导式与字典推导式

9月13日 飞虹谷投稿
  列表推导式与字典推导式
  在Python中推导式是一种非常Pythonic的知识,本篇博客将为你详细解答列表推导式与字典推导式相关的技术知识。列表推导式
  列表推导式可以利用列表,元组,字典,集合等数据类型,快速的生成一个特定需要的列表。
  语法格式如下:〔表达式for迭代变量in可迭代对象〔if条件表达式〕〕
  if条件表达式非必选,学完列表推导式之后,你可以发现它就是for循环的一个变种语句,例如咱们现有一个需求是将一个列表中的所有元素都变成原值的2倍。
  for循环写法mylist〔1,2,3〕newlist〔〕foriinmylist:newlist。append(i2)print(newlist)
  列表推导式写法nnlist〔i2foriinmylist〕print(nnlist)
  是不是对比看就是将for循环语句做了变形之后,增加了一个〔〕,不过需要注意的是,列表推导式最终会将得到的各个结果组成一个新的列表。
  再看一下列表推导式语法构成nnlist〔i2foriinmylist〕,for关键字后面就是一个普通的循环,前面的表达式i2其中的i就是for循环中的变量,也就是说表达式可以用后面for循环迭代产生的变量,理解这个内容列表推导式就已经掌握9成内容了,剩下的是熟练度的问题。
  在将if语句包含进代码中,运行之后,你也能掌握基本技巧,if语句是一个判断,其中i也是前面循环产生的迭代变量。nnlist〔i2foriinmylistifi1〕print(nnlist)
  这些都是一般技能,列表推导式能支持两层for循环,例如下述代码:nnlist〔(x,y)forxinrange(3)foryinrange(3)〕print(nnlist)
  当然如果你想加密(谁都看不懂你的代码)你的代码,你可以无限套娃下去,列表推导式并没有限制循环层数,多层循环就是一层一层的嵌套,你可以展开一个三层的列表推导式,就都明白了nnlist〔(x,y,z,m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)〕print(nnlist)
  当然在多层列表推导式里面,依旧支持if语句,并且if后面可以用前面所有迭代产生的变量,不过不建议超过2成,超过之后会大幅度降低你代码的可阅读性。
  当然如果你希望你代码更加难读,下面的写法都是正确的。nnlist〔(x,y,z,m)forxinrange(3)ifx1foryinrange(3)ify1forzinrange(3)forminrange(3)〕print(nnlist)nnlist〔(x,y,z,m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)ifx1andy1〕print(nnlist)nnlist〔(x,y,z,m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)ifx1ify1〕print(nnlist)
  现在你已经对列表推导式有比较直观的概念了,列表推导式对应的英文是listcomprehension,有的地方写作列表解析式,基于它最后的结果,它是一种创建列表的语法,并且是很简洁的语法。
  有了两种不同的写法,那咱们必须要对比一下效率,经测试小数据范围影响不大,当循环次数到千万级时候,出现了一些差异。importtimedefdemo1():newlist〔〕foriinrange(10000000):newlist。append(i2)defdemo2():newlist〔i2foriinrange(10000000)〕stimetime。perfcounter()demo2()etimetime。perfcounter()print(代码运行时间:,etimestime)
  运行结果:for循环代码运行时间:1。3431036140000001列表推导式代码运行时间:0。9749278849999999
  在Python3中列表推导式具备局部作用域,表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。所以其不会有变量泄漏的问题。例如下述代码:x6myvar〔x2forxinrange(3)〕print(myvar)print(x)
  列表推导式还支持嵌套
  参考代码如下,只有想不到,没有做不到的。myvar〔y4foryin〔x2forxinrange(3)〕〕print(myvar)字典推导式
  有了列表推导式的概念,字典推导式学起来就非常简单了,语法格式如下:{键:值for迭代变量in可迭代对象〔if条件表达式〕}
  直接看案例即可mydict{key:valueforkeyinrange(3)forvalueinrange(2)}print(mydict)
  得到的结果如下:{0:1,1:1,2:1}
  此时需要注意的是字典中不能出现同名的key,第二次出现就把第一个值覆盖掉了,所以得到的value都是1。
  最常见的哪里还是下述的代码,遍历一个具有键值关系的可迭代对象。mytuplelist〔(name,橡皮擦),(age,18),(class,no1),(like,python)〕mydict{key:valueforkey,valueinmytuplelist}print(mydict)元组推导式与集合推导式
  其实你应该能猜到,在Python中是具备这两种推导式的,而且语法相信你已经掌握了。不过语法虽然差不多,但是元组推导式运行结果却不同,具体如下。mytuple(iforiinrange(10))print(mytuple)
  运行之后产生的结果:generatorobjectgenexprat0x0000000001DE45E8
  使用元组推导式生成的结果并不是一个元组,而是一个生成器对象,需要特别注意下,这种写法在有的地方会把它叫做生成器语法,不叫做元组推导式。
  集合推导式也有一个需要注意的地方,先看代码:myset{valueforvalueinHelloWorld}print(myset)
  因为集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样,使用的时候很容易晕掉。这篇博客的总结
  这篇博客,我们学习了列表和字典推导式,掌握并熟练的应用二者之后,你Python技能又向前进了一步。
投诉 评论 转载

一个使用Python编写的轻量级百度爬虫《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个使用Python编写的轻量级百度爬虫BaiduS……小康股份年报研发投入超19亿元,营收占比11来源:环球网4月29日晚间,小康股份(601127。SH)发布2021年度业绩报告。公告显示,2021年小康股份全年实现营业收入167。18亿元,同比增长16。89,年度研发投……牛市什么时候到来据CNBC报道,Huobi联合创始人杜均预测,目前处于熊市的早期阶段,直到2024年底到2025年初,才能迎来比特币的下一个牛市。此外,他表示全面退出中国使得Huobi损……4000元竟能可以买到最新的iPhone13Pro,这是怎么距离苹果一年一度的科技春晚已经过去差不多半个月了,iPhone13系列带来的热度使很多用户都买不到首批iPhone13。那么今天就告诉大家如何以最划算的方式买到iPhone13……抬抬小手学Python列表推导式与字典推导式列表推导式与字典推导式在Python中推导式是一种非常Pythonic的知识,本篇博客将为你详细解答列表推导式与字典推导式相关的技术知识。列表推导式列表推导式可以利……一个今年50岁的老大爷名叫支付宝,你知道吗?,快来看看吧我们可以使用支付宝软件进行购物、消费、投资、转账等,这在一定程度上方便了我们的生活,但支付宝也因为它的名字造成了意外。有一个叫支付宝的大叔,直接把马云告上法庭,要阿里巴巴给他钱……GalaxyS22Ultra渲染图曝光,骁龙898加持,居中按照此前爆料,高通下一代旗舰芯片骁龙898将会在年底发布,且今年可能会比以往稍早一些,现在即将步入十月份,这就意味着这款全新的旗舰芯片很快就能和大家见面了。根据往年惯例,……沃尔沃在未来几周即将IPO,新能源版XC40续航里程400公受新冠状病毒的影响,消费者消费观念日益向健康和环保转变,沃尔沃品牌基因中的安全、健康、环保理念愈发凸显其内涵与价值。面对特斯拉、蔚来等新能源品牌的围追堵截,沃尔沃始终保持独立思……你们手机里有哪些值得添加的小程序?用过的微信小程序还是挺多的,常用的有以下这些,都非常实用,大家可以试试看:一、制作器几分钟就能制作出朋友圈各种高端截图,红包转账、聊天对话、时下流行装逼图都能生成,而且模……质感爆表!首款支持LDAC的海贝WH2TWS蓝牙耳机体验前阵子Lime在刷朋友圈,刚好看到一个耳机发烧友发了一张HiByWH2的海报,感觉质感很不错,于是我就赶着首发赶紧入手了一枚,来给大家分享下。WH2支持LDAC蓝牙编码同样价格……讯飞消费者业务品牌升级将拉近AI与大众距离过往,在技术力量不成熟的时代,确实让外国品牌吃到了科技的红利。尤其是沿海地区,甚至有一种外国品牌YYDS的错觉。一方面,当初国货竞争力偏弱,不少还是停留于卖货的水平;另外一方面……经典回顾!一文看尽iOS1到15大变迁随着WWDC21的结束,iOS15正式版也离我们越来越近了。虽然大家都爱调侃,最近这两年iOS的升级越来越安卓化了,但你有了解过,iOS的历史是怎样的,它是如何从一个青涩……
华为官方再次确认!荣耀手机也能升级鸿蒙OS系统内测机型遭到曝在闲鱼上卖什么比较吸引人?河北交投集团与河北联通达成战略合作一个只有义乌电商人知道的内外贸平台像搭积木一样合成3D小分子拍照神器助你国庆出游三星GalaxyS21Ultra5G换新华为折叠屏降价近万元,是技术倒退还是真卖不出去了?HarmonyOS升级用户创新高,鸿蒙的性能表现到底如何?麻烦给我列一个2。5w左右的电脑配置,玩大型单机,能玩GTAiPhone也要发力拍摄方面?或将在2022年实现极客简报苹果明年能否一枝独秀小米12新旗舰有些面熟更轻巧的办公鼠标,手感出色支持无线充电,雷柏M700无线充电四宝粥可以放百合吗四宝粥加百合好不好标志着造句用标志着造句大全奥运5金王拼二胎,化身模范丈夫送甜品和鲜花,却遭妻子吐糟井水烧开后有白色沉淀物能喝吗学会纪念,只为不悔的青春校园散文你是来推销幽默的么探秘男人心教你读懂他的心事彭富春作为作品的艺术品钱志熙:唐人论孟诗诠论高空坠物2021年是可入刑的吗?八字纳音五行解析石榴木如何应对招聘难裁员潮的现实

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利