zoukankan      html  css  js  c++  java
  • python 生成器函数

    从生成器中取值的方法

      next

      for循环

      数据类型的强制转换 缺点:占内存

    生成器函数的进阶

    send的使用效果

    def generator():
        print(123)
        content = yield 1
        print('=====',content)
        print(456)
        yield 2
    
    g = generator()
    ret  = g.__next__()
    print('***',ret)
    ret = g.send('hello')
    print('***',ret)

    123
    *** 1
    ===== hello
    456
    *** 2

      send获取下一个值的效果和next基本一致

      只是在获取下一个之的时候,给上一个之的位置传递一个数据

    使用send的注意事项

      第一次使用生成器的时候,是用next获取下一个值

      最后一个yield不能接受外部的值

    yield from

    def gen1():
        for c in 'AB':
            yield c
        for i in range(3):
            yield i
    print(list(gen1()))
    
    def gen2():
        yield from 'AB'
        yield from range(3)
    print(list(gen2()))

    从一个容器中取值,集体返回  可以一个一个接收

    列表推导式

    g = (i*i for i in range(10))
    for i in g:
        print(i)

    效果是打印出十以内的每个数的平方

    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    print([name for lst in names for name in lst if name.count('e') >= 2])

    ['Jefferson', 'Wesley', 'Steven', 'Jennifer']

    找到嵌套列表中名字含有两个‘e’的所有名字

    生成器表达式

    g = [i*i for i in range(30) if i%3==0]
    print(g)

    在列表中打印出能整除三的数的平方

     列表推导式和生成器表达式的区别

      括号不一样

      返回的值不一样===几乎不占用内存

    各种推导式:生成器  列表   字典   集合

    字典

    合并大小写对应的value值,将k统一成小写

    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)

    {'a': 17, 'z': 3, 'b': 34}

    将一个字典的key和value对调

    mcase = {'a':10,'b':34,'A':7,'Z':3}
    mcase_frequency = {mcase[k]: k for k in mcase}
    print(mcase_frequency)

    {10: 'a', 3: 'Z', 34: 'b', 7: 'A'}

    集合

    计算列表中每个值的平方,自带去重功能

    squared = {x**2 for x in [1,-1,2]}
    print(squared)

    {1, 4}

      它们都有遍历操作和筛选操作

  • 相关阅读:
    Exchange 2013与 Office Web Apps 整合
    SharePoint2013 以其他用户登录和修改AD域用户密码 功能
    sharepoint 2010 自定义页面布局
    sharepoint 2010 记录管理 对象模型
    SharePoint2010 对象模型 关联列表
    在SharePoint Server 2010中更改“我的网站”
    xenapp 6.5 客户端插件第一次安装总是跳到官网
    如何解决在Windows Server 2008 R2 上安装证书服务重启后出现 CertificationAuthority 91错误事件
    在Win7 Hyper-v虚拟机中挂接真实机的声卡
    win8 中如何删除 共享文件夹 用户名和密码
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8185340.html
Copyright © 2011-2022 走看看