zoukankan      html  css  js  c++  java
  • 补上:第30学习python生成器

    生成器:

    列表解析:res=[i for i in range(10)]————————》生成的是列表,但是数据量大的时候不适用

    生成器表达式:res=(i for i in range(10))—————》自动实现了迭代器协议:有next方法。可以省内存 

    yield生成器:要一个值就拿一个值

    #yield:有保持上一次结果
    def test():
    yield 1# 相当于return
    print("第二个next:")
    yield 2
    print("第三个next:")
    print("加油")
    yield 3
    res=test()
    print(res)#<generator object test at 0x010C32B0>。只是拿到了个生成器
    print(res.__next__())#获取结果是1,next一次结束必须遇到 yield
    print(res.__next__())#获取结果是:第二个next: 和 2
    print(res.__next__())#获取结果是:第三个next: 加油 3



    #母鸡下蛋的故事
    def xiadan():
    ret=[]
    for i in range(100):
    ret.append('鸡蛋%s' %i)
    return ret
    print(xiadan())#缺点:1、这样占空间大,一次性生成100个蛋。2、效率低


    #不用等直接下一个鸡蛋就拿走一个鸡蛋
    def xiadan():
    for i in range(100):
    yield "鸡蛋%s"%i

    jd=xiadan()
    d1=jd.__next__()
    print("第一个拿鸡蛋")
    d2=jd.__next__()
    print("第二个拿鸡蛋")


    #包子的例子:做一笼就出炉卖
    def baozi():
    for i in range(20):
    print("生成包子")
    yield "第一笼包子%s" %i

    res=baozi()
    dyl1=res.__next__()
    dyl2=res.__next__()
  • 相关阅读:
    Array
    ie兼容
    webpack----entry
    webpack——html-webpack-plugin
    webpack 报错 path is not defind
    PHPStorm自动压缩YUI Compressor配置
    fly
    Math.max得到数组中最大值
    简单html弹窗
    js中页面跳转(href)中文参数传输方式
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11581577.html
Copyright © 2011-2022 走看看