zoukankan      html  css  js  c++  java
  • 生成器和迭代器

    迭代器(iterator)

    实现了__iter__和__next__方法的对象都称为迭代器。迭代器是一个有状态的对象,在调用next() 的时候返回下一个值,如果容器中没有更多元素了,则抛出StopIteration异常。

    迭代器是一种Lazy Load的模式,只有在调用时才生成值,没有调用的时候就等待下一次调用。

    生成器: 生成器是一个返回迭代器的函数

    几个大是大非的问题要明确:

    1. 实现了_iter_()方法的对象,叫做【可迭代对象】
    2. 实现了next()方法的对象,叫做【迭代器对象】
    3. 往往【迭代器对象】也同时实现了_iter_()方法,同时成为【可迭代对象】
    4. 生成器就是一个迭代器,它是用生产器函数那种语法,来得到的一个【迭代器对象】
    生成器可以理解成一种特殊的迭代器,它和迭代器的区别在于,生成器并不是一上来就把所有值装载进内存,因而也不会占用大量的内存,只是在需要使用next()函数获取值的时候,才会取一个值返回,内存开销非常小。

    作者:diablo
    链接:https://www.zhihu.com/question/20829330/answer/469905401
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

  • 相关阅读:
    Oracle中merge into的使用
    ORACLE闪回操作 .
    Xmanager远程连接rel5 linux
    ORACLE EXPDP/IMPDP命令使用详细 .
    Oracle Hint
    Oracle中Union与Union All的区别
    关于文件不能访问,IIS提示MIME类型没有错误的解决方法
    当葱头碰上豆瓣酱时
    唯美之希望
    【出行贴士】全国旅游最佳时间
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/13036230.html
Copyright © 2011-2022 走看看