• python迭代器与生成器



    1、迭代器 iterator

    迭代器是一种对象类型!可以由生成器生成!

    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

    特点:

    1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
    2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
    3. 访问到一半时不能往回退
    4. 便于循环比较大的数据集合,节省内存

    iter 函数: python提供了一个iter函数用来生成迭代器。这个方法有两个参数,当只有一个参数的时候,若这个参数是一个容器,则返回这个容器的迭代器对象,若这个参数本身就是一个迭代器,则返回其自身。

    python内置实现了各种迭代协议,for循环就是一个很好的例子。for 循环的时候,首先对循环对象实现迭代器包装,返回一个迭代器对象,然后每循环一步,就调用哪个迭代器对象的next方法,循环结束的时候,自动处理了 StopIteration这个异常。for循环是对迭代器进行迭代的语法。

    2、生成器

    一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator);如果函数中包含yield语法,那这个函数就会变成生成器;这个函数中通常还有next()
    注意:函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
    def func():
        yield 1
        yield 2
        yield 3
        yield 4

    内置方法enumerator是一个典型的生成器

  • 相关阅读:
    20220428 08:00:02
    20220427 08:00:02
    Belong to you
    今天看到疫情驰援的人发布的视频,感触很多
    用生活治愈生活
    站 又名《standard》
    在mysql中,如果传入的startTime为20201112,20201113这样的字符串,则可以使用find_in_set取代in
    界面控件DevExpress WinForms MVVM入门指南——登录表单(下)
    界面控件DevExpress WPF v21.2 可访问性功能升级
    UI组件Kendo UI for jQuery数据管理教程 TaskBoard/搜索工具辑
  • 原文地址:https://www.cnblogs.com/huamingao/p/6037990.html
Copyright © 2020-2023  润新知