Python拾珍:3. 生成器表达式

生成器表达式(generator expression)和列表理解类似,但是它使用圆括号,而不是方括号:

g = (x**2 for x in range(5))

输出结果:

输出结果

结果是一个生成器对象,它知道如何遍历值的序列。但它又和列表理解不同,它不会一次把结果都计算出来,而是等待请求。内置函数 next 会从生成器中获取下一个值:

应用内置函数 next 的输出结果

当达到序列的结尾后,next 会抛出一个 StopInteration 异常。可以使用 for 循环来遍历所有值:

使用 for 循环来遍历所有值

一旦生成器遍历结束,再访问它就会抛出 StopException 异常:

抛出 StopException 异常

生成器表达式经常和 sum、max 和 min 之类的函数配合使用:

配合使用输出

本文参考自《像计算机科学家一样思考Python (第2版)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文翻译自Functional Programming Howto 本文将介绍Python中函数式编程的特性。在对...
    大蟒传奇阅读 7,484评论 4 14
  • 最近Angluar2挺火的,本人也趁热打铁的学习进行中,然而当做到将项目部署到IIS 6.0上时,localhos...
    阿甘呀阅读 4,977评论 0 2
  • 刚刚把熊孩子哄睡,脑子里还浮现着这位不到二岁的小男孩儿,用稚嫩的声音说着:“女神和女汉子,我们一起掰腕子。”额滴神...
    百花蜜阅读 1,573评论 0 0
  • 终于到了交流会的这一天,叶涵早早梳妆好奔去会场进行最后的排练。正因着没时间吃午饭而饥肠辘辘时,看到了温宇那张献殷情...
    木台阅读 2,515评论 0 0
  • 之后的日子,我安安稳稳地上班,转眼一年过去了。 这一年里,张磊一直在我身边帮衬着我。记得有一次,记错了客户的信息,...
    漫步meng阅读 1,859评论 0 0