• 迭代器和生成器


    迭代意味着重复多次,是实现了__iter__的对象,包含了__next__方法

    当调用__next__时迭代器返回下一个值,如果没有可供返回的值,引发StopTteration异常,也可以使用等价的next()函数

    nest(it)等效于__next__(it)

    实现了方法__iter__的对象是可迭代的,实现了__next__的对象是迭代器

    ***************************************************************************************************

    生成器是一种使用普通函数语法定义的迭代器

    通过一个例子来说明

    nested = [[1, 2], [3, 4], [5, 6]]
    def flatten(nested):
        for sublist in nested:
            for element in sublist:
                yield element
    #包含yield语句函数都被成为生成器
    #生成器不使用return返回值,而是可以生成多个值,每次一个
    #每次使用yield生成一个值后函数都将被冻结,等待重新唤醒
    #被唤醒后,从停止的地方重新开始执行
    
    for num in flatten(nested):
        print(num)

    生成器由两个单独的部分组成:生成器函数和生成器的迭代器,生成器的函数由def定义,其中包含yield;生成器的迭代器是这个函数的返回结果

    生成器方法:

    send() 在外部世界向生成器发送一个参数

    throw   用于在yield处引发异常,可提供一个异常类型,一个可选值和一个traceback对象

    close   用于停止生成器,无需提供参数

  • 相关阅读:
    Binary Stirling Numbers
    Count the Buildings ( s1 )
    P3375 【模板】KMP字符串匹配
    POJ2151Check the difficulty of problems
    fbx 模型转换 export
    Linux --windows vs
    phyreengine 3.12.0 安装遇到的问题
    A trip through the graphics pipeline 2011 Part 10(翻译)
    服务端 unity
    nsight 使用问题
  • 原文地址:https://www.cnblogs.com/wang-jie-devops/p/10862301.html
Copyright © 2020-2023  润新知