zoukankan      html  css  js  c++  java
  • 生成器

    1. 生成器
            本质就是迭代器.
            一个一个的创建对象
            创建生成器的方式:
                1. 生成器函数
                2. 通过生成器表达式来获取生成器
                3. 类型转换(看不到)
        2. 生成器函数 (重点)
            生成器函数中包含 yield , 返回数据和return差不多.
            return会立即结束这个函数的执行
            yield 可以分段的执行一个函数
            生成器函数在执行的时候返回生成器. 而不是直接执行此函数
            能向下执行的两个条件:
                __next__(), 执行到下一个yield
                send(), 执行到下一个yield, 给上一个yield位置传值
            所有的生成器都是迭代器都可以直接使用for循环
            都可以使用list()函数来获取到生成器内所有的数据
            生成器中记录的是代码而不是函数的运行
            def func():
                print("我的天哪 ")
                yield "宝宝"
            gen = func() # 创建生成器.  此时运行会把生成器函数中的代码记录在内存
            当执行到__next__(), 运行此空间中的代码, 运行到yield结束.
            优点: 节省内存, 生成器本身就是代码. 几乎不占用内存
            特点: 惰性机制, 只能向前. 不能反复
        3. 各种推导式 (诡异)
            列表推导式  [结果 for循环 if]
            字典推导式 {结果(k:v) for循环 if}
            集合推导式 {结果(k) for循环 if}
     
        4. 生成器表达式 (重点)
            (结果 for循环 if)
  • 相关阅读:
    hdu1240 bfs 水题
    hdu 2102 BFS
    gym 101081E Polish Fortress 几何
    Gym 101081K Pope's work dp
    hdu 6188 贪心
    hdu 6186 水
    Codeforces Round #430 (Div. 2) A B 水 C dfs,思维 D trie,二进制
    hdu6152 拉姆齐定理
    hdu6165 缩点,dfs
    hdu6153 扩展KMP
  • 原文地址:https://www.cnblogs.com/liuzhiqiang666/p/10102793.html
Copyright © 2011-2022 走看看