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
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

  • 相关阅读:
    实体机可以ping通虚拟机,虚拟机ping不通实体机
    实体机可以ping通虚拟机,虚拟机ping不通实体机
    eclipse快捷键
    eclipse快捷键
    利用信号捕捉函数回收子进程
    进程间通信_信号
    进程间通信_管道
    创建子进程
    系统编程入门
    JPG库移植与使用
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/13036230.html
Copyright © 2011-2022 走看看