zoukankan      html  css  js  c++  java
  • python--生成器进阶

    生成器进阶:

    send:
    移动平均值
    利息 7日化平均利率
         年化收益
    求平均值  总值/个数
    send:
    首先:send和next工作的起止位置是完全相同的
    send可以把一个值作为信号量传递到函数中去
    在生成器执行伊始,只能先用next
    只要用send传递参数的时候,必须在生成器还有一个未被返回的yield

    def func():
        print(123)
     value = yield 1     这里的yield遇到了send就传入了send中的值然后赋给了value
     print(456)
     value2=yield '***'+value+'***'     这里的value就是send中的值了,send后面一定要有yield来标志结束
        yiled
    g = func()
    print(next(g))
    print(g.send('aaa'))
    prin(g.send('bbb'))

    移动平均值

    def average_func():
        total = 0
     count = 0
     average = 0
     while True :
        value = yield average
        total += value
        count +=1
        average = total/count
    g = average_func()
    print(next(g))
    print(g.send(30))
    print(g.send(20))

    生成器中的激活  next方法可以用装饰器
    生成器中取值:
    next
    for
    list

    列表推导式:

    for i in [1,3,5]:
        new_l.append(i*i)
    print(new_l)
    #等同于:
    print([i*i for i in [1,3,5]])
    
    #用range写练习:
    print([i//2 for i in range(0,7,2)])
    #i后面加两个杠是整除
    print([egg%d%i for i in range(10)])
    #生成器表达式:
    #就是把中括号改成小括号
    a = ('egg%d%i for i in range(10))
    print(a)
    #生成器推导式一个一个拿,列表推导式是一下全拿出来。
    
    print([i for i in range(30) if i%3==0])   #3整除的30以内的
    print([i*i for i in range(30) if i%3==0])   #3整除的30以内的平方
    li = ['alex',['ueei','sfeef'],'opii']
    print([o for i in li if type(i)==list for o in i])   #嵌套列表里面含有两个e的

    字典推导式:

    #value可以作为key
    mcase = {'a': 10, 'b': 34}
    mcase_frequency = {mcase[k]: k for k in mcase}
    print(mcase_frequency)
    
    #合并大小写对应值
    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()}
    print(mcase_frequency)

    集合推导式:

    自带去重

    列表推导式[]-生成器表达式()
    尽量让推导式简化操作,增强代码可读性
    如果推导式过于复杂,应该转换成普通的python代码
    所有的列表推导式都可以转换成生成器表达式,并且应该在代码中尽可能多使用生成器表达式而不是列表推导式
    在代码里,多层嵌套的for循环是禁忌----会 大幅度增加代码的复杂度

  • 相关阅读:
    关于m3u8格式的视频文件ts转mp4下载和key加密问题
    Flask報錯 KeyError 'SQLALCHEMY_TRACK_MODIFICATIONS'.md
    ajax post data 获取不到数据,注意 content-type的设置 、post/get(转)
    Ajax 的一些概念 解析
    Apache2 服务配置 ubuntu16.04 + django1.11
    GitHub 远程仓库 de 第一次配置
    Django自带后台admin的使用配置
    每次启动虚拟机都要重置网卡设置,否则无法上网,很烦
    pip崩了, 解决 ModuleNotFoundError: No module named 'pip'.
    vue proxyTable
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7478680.html
Copyright © 2011-2022 走看看