Iterable,Iterator,generator

生成器有两种:

   生成器表达式:

    (x*x for x in [1,2,3])

  

   yield表达式:         

    

    def fib(max):

        n, a, b = 0, 0, 1

        while n < max:

              yield b

              a, b = b, a + b

             n = n + 1

        return 'done'

  

迭代器,有next()方法可以通过next()不断地获得下一个元素的就是迭代器;生成器也是迭代器。

可以用于for ...in...循环的就是可迭代,比如 dict list tuple str , dict、list、str、tuple可通过iter()函数获得迭代器,;

Python的for循环本质上就是通过不断调用迭代器的next()函数实现的

for x in [1, 2, 3, 4, 5]:

    pass

 

实际上完全等价于:

 

# 首先获得Iterator对象:

it = iter([1, 2, 3, 4, 5])

# 循环:

while True:

    try:

        # 获得下一个值:

        x = next(it)

    except StopIteration:

        # 遇到StopIteration就退出循环

        Break

  

posted @ 2017-03-08 19:35  yingge  阅读(114)  评论(0编辑  收藏  举报