您的位置:首页 > 编程语言 > Python开发

Python生成器表达式

2016-01-26 11:58 597 查看
简介:

  生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: