Python生成器表达式
2016-01-26 11:58
597 查看
简介:
生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(yield)出来。生成器表达式使用了"惰性计算"或称作"延时求值"的机制。
序列过长,并且每次只需要获取一个元素时,应该考虑生成器表达式而不是列表解析。
语法:
(expression for iter_val in iterable)
(expression for iter_val in iterable if cond_expr)
实例展示:
生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(yield)出来。生成器表达式使用了"惰性计算"或称作"延时求值"的机制。
序列过长,并且每次只需要获取一个元素时,应该考虑生成器表达式而不是列表解析。
语法:
(expression for iter_val in iterable)
(expression for iter_val in iterable if cond_expr)
实例展示:
>>> N = (i**2 for i in range(1,11)) >>> print N <generator object <genexpr> at 0x7fe4fd0e1c30> #此处返回的是一个生成器的地址 >>> N.next() 1 >>> N.next() 4 >>> N.next() 9 >>> N.next() 16 >>> N.next() 25 >>> N.next() 36 >>> N.next() 49 >>> N.next() 64 >>> N.next() 81 >>> N.next() 100 >>> N.next() #所有元素遍历完后,抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
>>> import os >>> F = (file for file in os.listdir('/var/log') if file.endswith('.log')) >>> print F <generator object <genexpr> at 0x7fe4fd0e1c80> >>> F.next() 'anaconda.ifcfg.log' >>> F.next() 'Xorg.0.log' >>> F.next() 'anaconda.storage.log' >>> F.next() 'Xorg.9.log' >>> F.next() 'yum.log'
相关文章推荐
- python中的编码知识整理汇总
- Python导入第三方模块后eclipse提示unresolved import
- python模块系列之 - re
- python quick start
- Python openpyxl Read
- Python列表解析
- Python RawSocket Syn
- 我开始学python了(4)
- python 调试 pdb
- Python 并行任务技巧
- python的简单入门
- 【python】print "hello" SyntaxError: Missing parentheses in call to 'print'
- 自己动手开发一个 Web 服务器(一)
- 理解Python的With语句
- Python迭代器(Iterator)
- 在MAC上搭建python数据分析开发环境
- Python 批量删除文件夹下面指定类型的所有文件
- python的学习之旅
- python base64
- python 通过logging写入日志到文件和控制台