标签:
生成器(Generator)是Python中的一类特殊对象,如果一个函数中出现一次或多次yield表达式,那么这个函数就是一个生成器。
生成器的特点是:
生成器对比返回列表的函数:
例1. 一个生成器的例子
def updown(n): for x in xrange(1, n): yield x for x in xrange(n, 0, -1): yield x for i in updown(5): print i , 1 2 3 4 5 4 3 2 1
生成器表达式
生成器表达式(generator expression)和列表推导式(list comprehension)具有非常类似的结构,列表推导式是使用方括号[]表示生成一个列表,而生成器表达式则是使用圆括号()返回一个一次产生一个值的生成器:
例:生成器表达式与列表推导式
>>> l = range(1,10) >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> [x*x for x in l] #列表推导式 [1, 4, 9, 16, 25, 36, 49, 64, 81] >>> (x*x for x in l) # 生成器表达式 <generator object <genexpr> at 0x000000000224E288>
显然,生成器表达式兼具列表推导式的简洁的优点,还能节省内存。
标签:
原文地址:http://www.cnblogs.com/Security-Darren/p/4713615.html