• Python_迭代器和生成器的复习_38


     迭代器和生成器

    迭代器:

    双下方法:很少直接调用的方法,一般情况下,是通过其他方法触发的

    可迭代的协议——可迭代协议 含有__iter__ 的方法 ('__iter__' in dir(数据))

    可迭代的一定可以被for循环

    迭代器协议:含有 __iter__ 和 __next__ 方法

    迭代器一定可以迭代, 可迭代的通过调用 __iter__() 方法就能得到一个迭代器

    迭代器的特点:

      很方便的使用,一个迭代器只能从前往后,取一次

      节省内存空间

      

    生成器:

    生成器的本质就是迭代器

    生成器的表现形式

      生成器函数

      生成器表达式

    生成器函数:

      含有yield关键字的函数就是生成器

      特点:

        调用函数之后函数不执行,返回一个生成器

        每次调用next方法的时候回取到一个值

        直到取完最后一个,再执行next的话就会报错

    写生成器实现:有一个文件,从文件里分段读取内容

    readline

    read(10)

    在读出来的内容前面加上一个  '***',再返回给调用者

    def generator():
        for i in range(20):
            yield '哇哈哈%s'%i
    
    g = generator()  #调用生成器函数得到一个生成器
    print(list(g))   #数据类型的强制装换 生成器转化为列表
    #ret = g.__next__() #每一次执行g.__next__就是从生成器中取值,预示着生成器函数中的代码继续执行 #print(ret) g1 = generator() num = 0 for i in g1: num += 1 if num > 50: break print(i) # 从生成器中取值的几个方法 # next # for # 数据类型的强制转换 : 占用内存
    # 从生成器中取值的几个方法
    # next
    # for
    # 数据类型的强制转换 : 占用内存

      

  • 相关阅读:
    sop服务治理
    调用链跟踪基本原理
    spring源码之bean的初始化及循环引用
    单调栈
    SpringBoot启动源码及自定义starter
    深入理解kafka
    Netty小结
    Oooooooooooooooooooooooooooooooooooooooooops, AN EMPTY AREA here.
    牛客OI周赛7-提高组 A 小睿睿的等式
    素数筛法求素数
  • 原文地址:https://www.cnblogs.com/LXL616/p/10676928.html
Copyright © 2020-2023  润新知