• 生成器和迭代器


    迭代器(iterator)

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

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

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

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

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

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

     

  • 相关阅读:
    javascript中对象两种创建方式
    javascript中in用法介绍
    爬虫介绍
    解决“(1146, "Table 'mydb.django_session' doesn't exist")”报错的方法
    使用docker 安装oracle
    Mac. 修改bash_file
    http://www.yyne.com/python使用-urllib-quote-进行-url-编码小技巧/
    pycharm database 使用
    pycharm add configuration
    mysql cmmand not found
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/13036230.html
Copyright © 2020-2023  润新知