zoukankan      html  css  js  c++  java
  • 生成器,推导式

    生成器

    生成器的本质就是迭代器

    通过函数变成一个生成器

     1 def func():
     2     print(1)
     3     yield 5  # 我的函数走到这了
     4     print(2)
     5     yield 9  # 我的函数走到这了
     6 
     7 g = func()  # 生成一个生成器
     8 
     9 print(g.__next__())
    10 print(g.__next__())
    11 print(list(range(10000)))
    每次遇到yield会返回并标记
    下次从yield下面的函数开始运行
    一共只有一个生成器
    1 def func():
    2     print(1)
    3     # return 5
    4     yield 5
    5 print(func().__next__())  # 这样生成一个生成器
    6 print(func().__next__())  # 这样生成一个生成器
    7 print(func().__next__())  # 这样生成一个生成器
    8 print(func().__next__())  # 这样生成一个生成器
    9 print(func().__next__())  # 这样生成一个生成器
    遇到yield就返回 再次打印还是从头开始 每次打印都生成一个新的生成器

    函数遇到return就结束 遇到yield不结束就挂起 

    yield作用 挂起 返回值 接受值

    生成器一定是一个迭代器 迭代器不一定是生成器

    生成器是可以让程序员自己定义的一个迭代器

    生成器的好处 可以节省空间

    生成器的特性 一次性的 惰性机制 从上到下

    send 相当于 next + 传的值 第一次接触生成器时,如果要用send  send的值必须是None  一般建议使用__next__

    yield from 将可迭代对象元素挨个返回

    python2 3x 版本操作区别

    python2 iter() next()

    python3 iter() next() __next__() __iter__()

    推导式

    列表推导法 [结果 语法]  [ ] 是容器

    集合推导法 [结果 语法}

    字典推导法 {键:值 语法}

    没有元组的推导式

    看着像元组的推导式 其实是一个生成器推导式 

    推导器可以节省代码

    推导式不宜太长 可读性差

    外部需要容器包一下 里边第一个位置是结果 剩下的是语法 每个间隔用空格隔开

     

  • 相关阅读:
    fastjson基本使用 (待继续完善)【原】
    webkit内核浏览器的CSS写法
    sencha touch pull-refresh-panel 面板下拉刷新
    一个非常棒的星星评分插件
    JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
    Git版本控制软件结合GitHub从入门到精通常用命令学习手册
    手把手教你如何加入到github的开源世界!
    前端面试题:高效地随机选取数组中的元素
    CSS3 动画animation
    CSS3 Transform
  • 原文地址:https://www.cnblogs.com/biulo/p/10542957.html
Copyright © 2011-2022 走看看