美文网首页
python生成器和迭代器的总结

python生成器和迭代器的总结

作者: 不懒狮Blaise | 来源:发表于2018-03-02 17:10 被阅读0次

    生成器都是一个迭代器,但是反过来不行。

    from collections import Iterable
    # 如果是可以用for或者next循环处理的就叫做迭代对象。
    print(isinstance([], Iterable))
    # True
    print(isinstance({}, Iterable))
    # True
    
    # 可以用next()函数调用并不断返回下一个值的对象称为迭代器: Iterator。
    from collections import Iterator #(注意不是Interable)
    print(isinstance([], Iterator))
    # False
    print(isinstance((x for x in range(10)), Iterator))
    # True
    
    
    print(type(x for x in range(10)))
    # <generator object <genexpr> at 0x0000000005F04A20>
    
    # 下一节将会说isinstance和type的区别
    
    
    # 迭代器生成的对象为生成器(因为生成器的原理是可以一边循环一边计算)
    def fib(max):
        # a, b = b, a+b
        a, b, n = 0, 1, 0
        while n < max:
            a,b = b,a+b
            yield(a)
            n=n+1
        return 'done'
    
    f = fib(5)
    
    print(isinstance(f, Iterator))
    
    try:    
        while True:
            print(next(f))
    except StopIteration as e:
        print('Generator return value:', e.value)
    

    相关文章

      网友评论

          本文标题:python生成器和迭代器的总结

          本文链接:https://www.haomeiwen.com/subject/zigaxftx.html