zoukankan      html  css  js  c++  java
  • 生成器

    生成器(generator):一个特殊的迭代器

    特点:1.惰性计算数据,节省内存

        2.能够记录状态,并通过next(生成器)函数【或者生成器.__next__()】,访问下一个状态

       3.具备可迭代特性

    创建方式:

    1  将[]→()    l = (i for i in range(1, 100) if 1 % 2 == 0)

    2  生成器函数

    例:

    def test():
        print("xxx")
        yield 1
        print("a")
        yield 2
        print("c")
        yield 3
        print("d")
        yield 4
    g = test()   #不执行(生成器的生成)
    next(g)    #或者g.__next__()

    yield 阻断当前函数执行,当使用next(g)或g.__next()时,都会让函数继续执行,然后当执行到下一个yield时,又会暂停。最后没有yield时,就会报错

    注意:

    执行函数时(g= test())不会真正执行函数,而是生成生成器

    send()方法-----------比next()多一个向之前挂起的yield传值的过程。(第一个yield前没有yield,则第一个send需要传入None)

    g.send("ooo")

    g.close()---------------------关闭生成器

    关闭之后不能再用next(g)访问

    return

    碰到return就会抛出异常,并将return后面的值一起抛出

    如:

    return 10

    StopIteration 10

    注意:

    生成器和迭代器只能迭代一次,如需再次遍历,则需要再次创建。

  • 相关阅读:
    文章分类
    多项式笔记(二)
    P7102 [w3R1] 算
    P3711 仓鼠的数学题
    常见特殊数的多项式求法
    P4091 [HEOI2016/TJOI2016]求和
    CF961G Partitions
    P4609 [FJOI2016]建筑师
    P5401 [CTS2019]珍珠
    P5162 WD与积木
  • 原文地址:https://www.cnblogs.com/dushuhubian/p/9635154.html
Copyright © 2011-2022 走看看