zoukankan      html  css  js  c++  java
  • python学习打卡 day12 生成器

    本节主要内容 :

    1. 生成器
    2. 生成器函数
    3. 各种推导式
    4. 生成器表达式

    一.生成器

    什么是生成器.生成器的本质就是迭代器.

    在python中有三种方式来获取生成器:

    1.通过生成器函数

    2.通过各种推导式来实现生成器

    3.通过数的转换也可以获取生成器

     二.生成器函数

    函数内部有yield. yield返回->return

    yield可以把函数分段执行

    生成器函数被调用的时候.返回的是生成器

    def func():

      yield

    g=func()--得到生成器

    生成器的用法和迭代器基本一致

    __next__()开始执行生成器.执行到yield.直到没有yield.跑出StopIteration

    send()可以给上一个yield传值,第一个和最后一个yield不用send()

    生成器的特点:

    1.节省内存

    2.惰性机制

    3.只能向前,不能反复.

    三.各种推导式

    列表推导式 [结果 for循环 if判断]

    字典推导式{key:value for循环 if判断}

    集合推导式 {key for循环 if判断}

    四.生成器表达式

    (结果 for循环  if判断)

    特点:惰性机制,不访问__next__()就没有值.

    只能向前,不能反复

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

    1.列表推导式比较耗内存.一次性加载.生成器表达式几乎不占内存.使用的时候才分配和使用内存

    2.得到的值不一样.列表推导式得到的是一个列表.生成器表达式获取的是一个生成器.

    深坑:生成器,只有要值的时候才拿值

    总结:推导式有--列表推导式,字典推导式,字典推导式,集合推导式,没有元组推导式

    生成器表达式:(结果 for 变量 in 可迭代对象 if 条件筛选)

    生成器表达式可以直接获取到生成器对象.生成器对象可以直接进行for循环.生成器具有惰性机制.

  • 相关阅读:
    虚拟主机支持apk
    pc显示,手机隐藏
    manjaro个人配置
    docker-compose部署elk
    docker-compose部署zk和kafka
    docker-compose部署redis-cluster
    ActiveMQ与RocketMQ对比
    dropbox离线安装包--需FQ
    C++实现中缀表达式转前、后缀
    运算符优先级
  • 原文地址:https://www.cnblogs.com/af1y/p/9891195.html
Copyright © 2011-2022 走看看