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异常

 

posted @ 2020-05-09 00:15  进阶的淑琴  阅读(99)  评论(0)    收藏  举报