zoukankan      html  css  js  c++  java
  • 【代码学习】PYTHON 生成器

    一、生成器

    一遍循环一遍计算的机制,称为生成器

    二、生成器的特点:

    1、节约内存

    2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的

    三、创建方法

    1、把列表生成式的[]改为()

    #列表
    L = [x*2 for x in range(5)]
    print L
    #生成器
    G = (x*2 for x in range(5))
    print G

    以上代码运行结果

    [0, 2, 4, 6, 8]
    <generator object <genexpr> at 0x0000000002E40AF8>

    2、yield 生成

    yield 自动终止返回结果。

    循环从终止的地方向下进行

    def  creatNum():
        print ("----start----")
        i = 0
        while i < 5:
            temp = yield i
            print(temp)
            i+= 1
    #创建一个生成器对象
    a = creatNum()
    #让对象开始执行,第一次从头开始执行,如果之前执行过,就从上一次停止的地方开始执行
    next(a)

    以上代码运行结果

    ----start----
    >>> next(a)
    None
    1
    >>> next(a)
    None
    2
    >>> a.send("SQYY")
    SQYY
    3
    >>> next(a)
    None
    4
    >>> 

    四、补充:

    send()

    执行到yield时,gen函数作用暂时保存send发送过来的值

    c.next()等价c.send(None)

  • 相关阅读:
    .Spring事务管理
    什么叫事务;什么叫业务逻辑;什么叫持久化
    Hibernate基本应用01
    Maven整理
    责任链模式和观察者模式
    SpringBoot基础入门
    反射总结
    多线程
    IO流
    File类总结
  • 原文地址:https://www.cnblogs.com/sqyysec/p/7207888.html
Copyright © 2011-2022 走看看