原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12228750.html
把列表推导式的方括号 [] 改成 圆括号 () ,就完成了一个生成器。
列表推导式
生成器
yield
在Python中,一个函数使用了 yield 方法,这个函数就是一个生成器,但是和 return 不同,yield 返回一个值后,并不会终止当前函数的运行状态,而是让其继续运行下去,局部变量也会被保存。
e.g.
def gen_number(n): print('gen number start...') while n < 3: yield n n += 1 print('gen number end...')
output
Summary
生成器一次只生成一个迭代对象,而不是像列表推导式一样一次性将一整个列表放到内存中,所以它非常节省内存空间。