转于:http://www.cnblogs.com/liu-shuai/p/6098218.html

博主:刘-帅

简介:

  生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(yield)出来。生成器表达式使用了"惰性计算"或称作"延时求值"的机制。

  序列过长,并且每次只需要获取一个元素时,应该考虑生成器表达式而不是列表解析。

语法:

  (expression for iter_val in iterable)

  (expression for iter_val in iterable if cond_expr)

实例展示:

 1 >>> N = (i**2 for i in range(1,11))
2 >>> print N
3 <generator object <genexpr> at 0x7fe4fd0e1c30> #此处返回的是一个生成器的地址
4 >>> N.next()
5 1
6 >>> N.next()
7 4
8 >>> N.next()
9 9
10 >>> N.next()
11 16
12 >>> N.next()
13 25
14 >>> N.next()
15 36
16 >>> N.next()
17 49
18 >>> N.next()
19 64
20 >>> N.next()
21 81
22 >>> N.next()
23 100
24 >>> N.next() #所有元素遍历完后,抛出异常
25 Traceback (most recent call last):
26 File "<stdin>", line 1, in <module>
27 StopIteration
 1 >>> import os
2 >>> F = (file for file in os.listdir('/var/log') if file.endswith('.log'))
3 >>> print F
4 <generator object <genexpr> at 0x7fe4fd0e1c80>
5 >>> F.next()
6 'anaconda.ifcfg.log'
7 >>> F.next()
8 'Xorg.0.log'
9 >>> F.next()
10 'anaconda.storage.log'
11 >>> F.next()
12 'Xorg.9.log'
13 >>> F.next()
14 'yum.log'

最新文章

  1. ORACLE分区表梳理系列(一)- 分区表概述、分类、使用方法及注意事项
  2. SharePoint 2013 Apps TokenHelper SharePointContext OAuth Provider-Hosted App (抄袭,测试 csc.rsp 用)
  3. mingw32-g++.exe: *: No such file or directory错误解决方法
  4. 文件写入文件分布式系统(asp.net C#)
  5. URL学习笔记
  6. C++ 之再继续
  7. Qt中addStretch的有趣应用
  8. Struts2学习笔记(一) Struts2配置文件的配置
  9. HDU Billboard
  10. 嗅探js css 文件是否加载成功示例
  11. Alamofire源码解读系列(六)之Task代理(TaskDelegate)
  12. Generator的正确打开方式
  13. Java编程的逻辑 (12) - 函数调用的基本原理
  14. 八. Python基础(8)--函数
  15. Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(5)
  16. vue的坑
  17. 大西洋帝国第一季/全集Boardwalk Empire1迅雷下载
  18. select,radio,checkbox兼容性
  19. debian修改默认编辑器
  20. Java8新特性 - Lambda表达式 - 基本知识

热门文章

  1. 程序运行之ELF 符号表
  2. spark 在yarn执行job时一直抱0.0.0.0:8030错误
  3. 函数创建XML文件
  4. C#与数据库连接简单测试
  5. sqlalchemy——多表操作
  6. Pinpoint扩展插件实践笔记
  7. JAVA中最方便的Unicode转换方法
  8. 使用MAVEN手动创建web项目
  9. 使用Pydoc生成文档
  10. SpringCloud-服务的注册与发现(Eureka)