美文网首页
迭代器与生成器

迭代器与生成器

作者: 小龙虾0o0 | 来源:发表于2019-03-10 14:15 被阅读0次

    网上有很多迭代器与生成器的介绍,此处不啰嗦,简单概括一下。

    迭代器即实现了 _iter_ 与 next()
    迭代器可以通过iter(可迭代对象)创建
    迭代器本质是在不停地产生新的对象以此节约内存
    生成器是一个包含yield关键字的函数调用后的对象(是一种迭代器)

    思考:既然迭代器是不停地生产一个对象,那iter()产生的到底是一个什么东西呢?

    猜想:它产生的是一个方法,不停地得到下一个对象,它的依据是 iter 的参数对象

    代码:

    a = [1, 2, 3]
    b = iter(a)
    for i in b:
        print(i)
    >>> 1
    >>> 2
    >>> 3
    
    del a
    for i in b:
        print(i)
    >>> 
    

    删除了 a,再遍历迭代器b时,根本得不到1,2,3了。因为b这个类似工厂的东西,失去了原料。它的方法需要建立在 a 存在的基础上。
    再看生成器,是不是可以理解成生成器是我们不需要系统去构建这个工厂,而是自己自定义一个工厂,它的原料可以自定义为外部供给,也可以设置为内部产生。

    相关文章

      网友评论

          本文标题:迭代器与生成器

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