• 生成器


    ###列表生成式
    [ i * 2 for i in range(10) ]
    ##>>>输出是[0,2,4,6,8,10,12,14,16,18]
    ##也是也可以用于函数
    [ func(i) for i in range(10) ]
    
    ###[ i * 2 for i in range(10) ] 的输出结果和:
    a = []
    for i in range(10):
        a.append(i*2)
    ##的结果是一样的

     生成器

    ###生成器的创建和列表生成式式差不多的,不一样的是列表生成式是用[],生成器的的创建是用()来创建的
    ##比如:
    c=( i * 2 for i in range(100) )
    ##这样就创建好了生成器
    
    ##生成器的概念
    1.生成器只有在调用时才会生成相应的数据,只记录当前的位置
    2.只有c.__next__()取值,只有一个方法,而且只能一个一个的取,不能往会取值
    ###斐波那契数
    def fid(max)
        n,a,b = 0,0,1
        while n<max:
            print(b)
            a,b  = b , a+b
            n += 1
      renturn "done"
    fid(100)
    ###斐波那契数生成式
    def fib(max):
        n,a,b = 0,0,1
        while n<max:
            yield b  ###和上面的差别在这里
            a,b = b , a+b
    
    fib=  fib(100)
    print(fib.__next__())
    print(fib.__next__())
    生成器send()
    def
    consumer(name) print("%s准备吃包子了"%name) while True: baozi = yield print("[%s]包子来了,[%s]吃吧"% (baozi,name)) c = consumer("Caicai") c.__next__()###只能调用,不能传值 c.send("韭菜")###通过send()向生成器中的yield传一个值进去
    以上内容作为课堂笔记,如有雷同,请联系于我
  • 相关阅读:
    FreeMarker list指令(3.2)
    FreeMarker if指令(3.1)
    FreeMarker FTL常用指令(3)
    FreeMarker模板文件的组成(2)
    FreeMarker语言概述(1)
    动态执行--获取某数据库某表某些字段的唯一值
    Luogu P3403 跳楼机|同余最短路
    Luogu P1640 [SCOI2010]连续攻击游戏|二分图
    **** **** 黑白球|DP
    **** **** 建筑物|DP
  • 原文地址:https://www.cnblogs.com/ArtisticMonk/p/8932962.html
Copyright © 2020-2023  润新知