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循环.生成器具有惰性机制.

  • 相关阅读:
    asp.net core 3 WebApi System.Text.Json 返回数据配置
    linux 版本
    netcore HttpClient Post 提交数据
    mysql information_schema 常用命令
    linux 发布console 控制台命令
    mysql 创建数据库脚本
    C# 两个 List 数组 元素是否相同 数组相等
    windows 安装redis64
    阿里云 linux 安全组
    linux 安装redis
  • 原文地址:https://www.cnblogs.com/af1y/p/9891195.html
Copyright © 2011-2022 走看看