中职电子与信息:《yhon小屋》2-2-2 生成器推导式_第1页
中职电子与信息:《yhon小屋》2-2-2 生成器推导式_第2页
中职电子与信息:《yhon小屋》2-2-2 生成器推导式_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Python小屋》之二Python序列2.2元组与生成器推导式生成器推导式从形式上看,生成器推导式与列表推导式非常接近,只是生成器推导式使用圆括号而不是列表推导式使用的方括号。与列表推导式不同的是,生成器推导式的结果是一个生成器对象,而不是列表,也不是元组。使用生成器对象的元素是,可以根据需要将其转化为列表或元组,也可■以使用生成器对象的_next_()方法或者内置函数next。进行遍历,或者直接将其作为迭代器对象来使用。但是不管哪种方法访问其元素,当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象。1»>g=((i+2)**2foriinrange(lO))#创建生成器对象2»>g3<generatorobject<genexpr>at0x00000000035414C0>4»>5»>5»>tuple(g)5»>tuple(g)#5»>tuple(g)#将生成器对象转换为元组6(4,9,16,25,36,49,64,81,100,121)6(4,9,16,25,36,49,64,81,100,121)7»>8»>list(g)6(4,9,16,25,36,49,64,81,100,121)7»>8»>list(g)9口#生成器对象已遍历结束,已经没有元素了»>»>g=((i+2)**>»»>g._next_()4»>g._next_()9»>»>next(g)16»>next(g)»>»>g=((i+2)»>»>g=((i+2)**>»»>g._next_()4»>g._next_()9»>»>next(g)16»>next(g)2foriinrange(lO))#使用生成器对象的_next_()方法获取元素#获取下一个元素#使用内置函数next。获取生成器对象中的元素#获取下一个元素2125»>»>»>»>g={(i+2)**2foriinrange(lO))»>»>foriteming:#使用循环直接遍历生成器对象中的元素print(item/end=,')314916253649648110012132»>代码块小提示:(1)生成器对象具有惰性求值的特点,只在需要时返回元素,比列表推导式具有更高的效率,尤其适合大量数据的遍历。拓展知识:生成器对象。包含yield语句的函数也可以用来创建可迭代的生成渊对象。下面的diamante演示了如何使用生成器来生成斐波那契数列。1»>deff():2a,b=l,l#序列解包,同时为多个元素赋值3whileTrue:4yielda#暂停执行,需要时再产生一个新元素5a,b=b,a+b#序列解包,继续生成新元素678»>9»>a=f()#创建生成器对象1011»>foriinrange(lO):#获取斐波那契数列中前10个元素12print(a._next_(),end=")1314151123581321345516»>17»>18»>19»>20»>21»>foriinf():#获取斐波那契数列中第一个大于100的元素22ifi>100:23print(i)24break25262714428>»29»>a=f()30»>next(a)#使用内置函数next。获取生成器对•象中的元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论