Python生成器与迭代器
生成器迭代器的区别
生成器就是迭代器
区别:
1)生成器做到了迭代器的所有的事情,而且自动创建 iter()和next()方法,生成器显示简洁而且高效
2)生成器表达式取代列表解析可以同时节省内存。
3)除了创建和保存程序状态的自动方法,当生成器终结时,还会自动抛也Stoplteration异常
--------------------------------------------
实例
#迭代器+生成器
def func():
for i in xrange(10):
yield i
#通过列表来创建生成器
[i for i in xrange(10)]
# 调用如下
f=func()
f# 此时生成器还没有运行
f.next()# 当i=0时,遇到yield关键字,直接返回
f.next() # 继续上一次执行的位置,进入下一层循环
f.next()
f.next() # 当执行完最后一次循环后,结束yield语句,生成StopIteration异常
----------------------------------
使用result=(i for i in xrange(10))-----能够直接创建一个生成器
如果list(result) #生成器只遍历一次,会直接调用next()方法直接遍历完所有的内容
如果记录result.next()会生成StopIteration异常

浙公网安备 33010602011771号