纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

联合迭代器与生成器,这个内置函数真香

11月11日 失了心投稿
  来源:Python猫
  作者:豌豆花下猫
  花下猫语:Python中很多内置函数的作用都非常大,比如说enumerate()和zip(),它们使得我们在作迭代操作时极为顺手。这是一篇很多年前的PEP,提议在Python2。3版本中引入enumerate(),该文档整合了其它几篇PEP的想法(包括当时新引入的迭代器与生成器),提出了更好的实现方案以及函数名。经过这么多年的发展,enumerate()不可避免地有了一些变化,但不变的是,它跟19年前一样,还是很有必要、很好用,用着真香!
  PEP原文:https:www。python。orgdevpepspep0279
  PEP标题:Theenumerate()builtinfunction
  PEP作者:RaymondHettinger
  创建日期:20020630
  合入版本:2。3
  译者:豌豆花下猫Python猫
  PEP翻译计划:https:github。comchinesehuazhoupepscn摘要
  本PEP引进了一个新的内置函数enumerate()来简化常用的循环写法。它为所有的可迭代对象赋能,作用就像字典的iteritems()那样一种紧凑、可读、可靠的索引表示法。基本原理
  Python2。2在PEP234〔3〕中提出了可迭代对象接口的概念。iter()工厂函数作为一种通用的调用约定而被提出,深入修改了迭代器的使用方式,作为整个Python的统一规范。这种统一的规范就是为映射类型、序列类型和文件对象建立一个通用的可迭代对象接口。
  PEP255〔1〕中提出的生成器是作为一种更容易创建迭代器的方法引入的,特别是具有复杂的内部执行过程或变量状态的迭代器。有了生成器以后,PEP212〔2〕中关于循环的计数器的想法就有可能改进了。
  那些想法是提供一种干净的迭代语法,带有索引和值,但不适用于所有的可迭代对象。而且,那种方法没有生成器提供的内存友好的优点(生成器不会一次性计算整个序列)。
  (Python猫注:关于生成器的PEP也有翻译,请点击查看PEP255、PEP342、PEP380)
  新的提议是添加一个内置函数enumerate(),在有了迭代器和生成器以后,它就可以实现。它为所有的可迭代对象赋能,作用就像字典的iteritems()那样一种紧凑、可读、可靠的索引表示法。像zip()一样,它有望成为一种常用的循环习语(idiom)。
  (Python猫注:zip()函数非常强,推荐阅读《一篇文章掌握Python内置zip()的全部内容》)
  这一提议的目的是利用现有的实现,再加一点点的努力来整合。它是向后兼容的,不需要新的关键字。本提案将合入Python2。3,不需要从future中导入。新内置函数的规范defenumerate(collection):Generatesanindexedseries:(0,coll〔0〕),(1,coll〔1〕)。。。i0ititer(collection)while1:yield(i,it。next())i1
  注A:PEP212循环计数器迭代〔2〕讨论了几个实现索引的提议。有些提议只适用于列表,不像上面的函数适用于任意生成器、xrange、序列或可迭代对象。
  另外,那些提议是在Python2。2之前提出并评估的,但是Python2。2没有包含生成器。因此,PEP212中的非生成器版本有一个缺点,即会用一个巨大的元组列表,导致消耗太多内存。
  这里提供的生成器版本快速且轻便,适用于所有可迭代对象,并允许用户在不浪费计算量的情况下中途放弃。
  还有一些涉及相关问题的PEP:整型迭代器、整型for循环,以及一个修改range和xrange的参数的PEP。enumerate()提案并不排斥其它提案,即使那些提案被采纳,它仍然满足一个重要的需求对任意可迭代对象中的元素进行计数的需求。
  其它的提案给出了一种产生索引的方法,但没有相应的值。如果给定的序列不支持随机访问,比如文件对象、生成器或用getitem定义的序列,这就特别成问题。
  注B:几乎所有的PEP审阅人都欢迎这个函数,但对于是否应该把它作为内置函数
  存在分歧。一方提议使用独立的模块,主要理由是减缓语言膨胀的速度。
  另一方提议使用内置函数,主要理由是该函数符合Python核心编程风格,适用于任何具有可迭代接口的对象。正如zip()解决了在多个序列上循环的问题,enumerate()函数解决了循环计数器的问题。
  如果只允许加一个内置函数,那么enumerate()就是最重要的通用工具,可以解决最广泛的问题,同时提高程序的简洁性、清晰度和可靠性。
  注C:讨论了多种备选名称:
  函数名分析iterindexed()五个音节太拗口了index()很好的动词,但是可能会跟。index()方法混淆indexed()很受欢迎,但是应该避免形容词indexer()在for循环中,名词读起来不太好count()直接而明确,但常用于其它语境itercount()直接、明确,但被不止一个人讨厌iteritems()与字典的key:value概念冲突itemize()让人困惑,因为amap。items()!list(itemize(amap))enum()简练;不及enumerate清楚;与其它语言中的枚举太相似,但有着不同的含义
  所有涉及count的名称还有一个缺点,即隐含着计数是从1开始而不是从0开始的意思。
  所有涉及index的名称与数据库语言的用法冲突,数据库的索引表示一种排序操作,但不是线性排序。
  注D:在最初的提案中,这个函数带有可选的start和stop参数。GvR指出,函数enumerate(seqn,4,6)还有一种看似合理的解释,即返回序列的第4和第5个元素的切片。为了避免歧义,这两个可选参数被摘掉了,尽管这意味着循环计数器失去了部分的灵活性。
  在从1开始计数的常见用例中,这种可选参数的写法很有用,比如:forlinenum,lineinenumerate(source,1):printlinenum,line
  (Python猫注:这篇文档说enumerate没有起止参数,然而,在后续版本中(例如我用的3。9),它支持使用一个可选的start参数!我暂未查到这个变更是在何时加入的,如有知情者,烦请告知我,以便修正!)
  GvR评论道:filter和map应该die,被纳入列表推导式,不增加更多的变体。我宁可引进做迭代器运算的内置函数(例如iterzip,我经常举的例子)。
  我认可用某种方法并行地遍历序列及其索引的想法。把它作为一个内置函数,没有问题。
  我不喜欢indexed这个名字;形容词不是好的函数名。可以用iterindexed()?
  KaPingYee评论道:
  我对你的提议也很满意新增的内置函数(倾向于用indexed)是我期盼了很久的东西。
  NeilSchemenauer评论道:
  新的内置函数听起来不错。Guido可能会担心增加太多内置对象。你最好把它们作为某个模块的一部分。如果你用模块的话,那么你可以添加很多有用的函数(Haskell有很多,我们可以去偷)。
  MagnusLieHetland评论道:
  我认为indexed会是一个有用和自然的内置函数。我肯定会经常使用它。我非常喜欢indexed();1。很高兴它淘汰了PEP281。为迭代器添加一个单独的模块似乎是个好主意。
  来自社区的反馈:
  对于enumerate()提案,几乎100赞成。几乎所有人都喜欢这个想法。
  作者的注释:在这些评论之前,共有四种内置函数被提出来。经过评论之后,xmap、xfilter和xzip被撤销了。剩下的一个对Python来说是至关重要的。Indexed()非常容易实现,并且立马就可以写进文档。更重要的是,它在日常编程中很有用,如果不用它,就需要显式地使用生成器。
  这个提案最初包含了另一个函数iterzip()。但之后在itertools模块中实现成了一个izip()函数。
投诉 评论 转载

橡胶弹簧的作用以及性能特点橡胶弹簧是一种高分子的弹性弹簧,它的减振效果非常好,共振领域小,具有使用寿命长、成本低、耐寒性好、气密性优良等优点。另外,橡胶弹簧还具有防水性、电绝缘性,是各个工业领域减振产品……互联网墙裂,禁屏令下的时代新纪元今天是国内互联网公司开放各自生态的deadline,此前,工信部曾提出有关即时通信软件的合规标准,要求9月17日前各平台必须按标准解除屏蔽,否则将依法采取处置措施。这里所……海外财经媒体焦点爆料称苹果iPhoneSE3可能在今年4月问财联社1月20日讯,隔夜,海外市场聚焦全球经济以及公司动态。全球经济方面,美国财长耶伦称奥密克戎毒株不会破坏美国经济复苏;欧洲央行坚称2022年不可能加息,金融市场并不相信;英……联通公司你这么套路老百姓有意思吗?希望给大家做个提醒13块钱,按理说不至于生这么大气,可是这要是发生在小商小贩身上,这也可以理解,但是这事发生在中国联通身上,就非常让人气愤了!事情是这样的,夏天的时候我办了张中国联通的电话卡,宣……入门既豪华,搭2。0T可爆245马力,可加92汽油,实拍林肯提到豪华品牌汽车,想必大家都会不由自主地想到德系BBA,毕竟它们也是豪车市场中的第一梯队。其实,在笔者看来,第二梯队里的个别车型,也是可以考虑的,它们也有着比较豪华的体验,以及……海南免税版苹果iPhone13全系的价格出炉,低至5045元9月24日消息苹果9月15日召开秋季新品发布会,正式发布了iPhone13系列手机等新品。苹果iPhone13系列新机在今日正式开售,售价5199元起,消费者可以通过苹果……联合迭代器与生成器,这个内置函数真香来源:Python猫作者:豌豆花下猫花下猫语:Python中很多内置函数的作用都非常大,比如说enumerate()和zip(),它们使得我们在作迭代操作时极为顺手……逐帧吐槽视频编程语言为什么不能用中文,这真是把老外难住了大家应该知道,我不是个爱斤斤计较的人。毕竟喷中文编程的绵延快二十年,虱子多了不愁么。但是,但是呢,如果同一个虱子老是在你手指边上晃悠,那就免不得人家好奇心起,用把这虱子制……华为Mate30Pro推送鸿蒙HarmonyOS2。0。0。IT之家8月7日消息感谢IT之家网友的热心线索投递,华为Mate40Pro手机开始推送鸿蒙HarmonyOS2。0。0。165更新,大小为367MB,本次更新主要新增了多机位拍……精准定位客户B2B关键词挖掘(二)独立站的推广运营中,合适的关键词选择十分影响在战场上高效获客。所以,千万不要跑错片场了,你是做B2B的就潜心去挖掘B2B关键词进行推广,别整些B不B、C不C的操作。不仅m……戴尔发布XPS17Intel10代加持RTX2060,窄边框今天,戴尔举行了线上2020夏季新品发布会,这次带来的是两款笔记本电脑,其中一款是重新设计的XPS15,另一款是新品XPS17。戴尔XPS17采用第10代英特尔核心处理器……实用分享IntelliJIDEA个人实用配置主题字体推荐DejaVuSansMono,这个字体绝对爽翻第二推荐Courier或者CourierNewIDEA应用字体代码字体预览常用插件Alibab……
上海微电子光刻机在全球属于什么水平?如何解决LDL的假赛我们有几个不成熟的建议华为提出千亿美元目标,三星缩减产量,一进一退,华为反了?又有银行APP关停,怎么回事?拼多多商家的一些心里话吧,你这样,真容易让商家寒心全球线上外卖业务激增,商米移动设备出货量增加100护理自考论文范文高校图书馆信息管理员素质论文医学成人教育学分制教学管理模式论文水利建设造价管控途径研讨论文先睹为快,即将推出的AirPods3癌症患者去世后,如果不火化,癌细胞还能在自然界存活多久?
校园风清新发型盘点回忆学生时代清纯气质我的家乡作文450字一旦房价不再上涨,房子会不会成为一种负担?适合一个人做的生意(小区适合一个人做的生意)热文聚热点网 40年前,东北大姨花8元买了1瓶酒,如今竟能卖到天价,为何?孩子新入幼儿园出现幼儿分离焦虑症怎么办印度乘法口诀,比中国的快多了!学一学,健。。。老年人阴道痒是什么原因引起的laprairie鱼子酱粉霜好用吗多少钱钓鱼网址的工作原理《牡丹亭》主要内容简介及赏析以感恩为话题的初中作文600字热评聚热点网

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形