• python 迭代器与生成器


    迭代器与生成器

    有双下划线的叫双下方法

    iterable             可迭代的

    只要是能被for循环的数据类型,就一定拥有__iter__方法

    只要含有__iter__方法的都是可迭代的

    一个列表执行了__iter__()之后的返回值就是一个迭代器

    __next__   通过next就可以从迭代器中一个一个的取值

    只要含有__iter__方法的都是可迭代的-------可迭代协议

    迭代器协议  内部含有__next__和__iter__方法的就是迭代器

    迭代器协议和可迭代协议

    可以被for循环的都是可迭代的

    可迭代的内部都有__iter__方法

    只要是迭代器 一定可迭代

    可迭代的__iter__()方法就可以得到一个迭代器

    迭代器中的__next__()方法可以一个一个的获取值

    for循环其实就是在使用迭代器

    只有是可迭代对象的时候才能用for

    当我们一遇到一个新的变量,不确定能不能for循环的时候,就判断它是可迭代

    迭代器的好处

      从容器类型中一个一个的取值,会吧所有的值都取到

      节省内存空间

        迭代器并不会在内存中再占用一大块内存

          而是随着循环,每次生产一个

          每次next每次给我一个

    生成器

    本质还是迭代器,我们自己写的迭代器

    只要含有yield关键字的函数都是生成器

    yield不能和return共用,且需要卸载函数内

    生成器函数:执行之后会得带一个生成器作为返回值

  • 相关阅读:
    一条命令深度清理你的mac
    将以太坊封装为 ERC20
    golang subprocess tests
    go 笔记
    readme
    如何使用 channel
    修改vscode caipeiyu.writeCnblog ,简化博客发布
    thedao
    firefox 59 无法使用 pac 代理上网
    scrapy简单使用
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8178713.html
Copyright © 2020-2023  润新知