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

  • 相关阅读:
    增量学习中的自我训练
    半监督学习和直推学习的区别
    LeetCode: Word Break
    LeetCode: Linked List Cycle
    LeetCode: Reorder List
    LeetCode: Binary Tree Traversal
    LeetCode: LRU Cache
    LeetCode: Insertion Sort List
    LeetCode: Sort List
    LeetCode: Max Points on a Line
  • 原文地址:https://www.cnblogs.com/af1y/p/9891195.html
Copyright © 2020-2023  润新知