• 生成器:

    • 生成器的本质就是迭代器
    • 生成器一般由生成器函数或者生成器表达式来创建,其实就是手写的迭代器
  •  1 def func():
     2     print('abc')
     3     yield 222     #由于函数中有了yield
     4
     5 ret = func()
     6 print(ret)       #我们执行函数的时候实际上是获取生成器
     7
     8 结果:
     9 <generator object func at 0x10567ff68>
    10  这个叫func的生成器的内存地址0x10567ff68

    • 在Python中可以通过三种方式来获取生成器:

      • 1.通过生成器函数
      • 2.通过各种推导式来实现生成器
      • 3.通过数据的转换也可以获取生成器
    • yield:
      • 将函数中的return换成yield就是生成器,由于函数中存在了yield,我们再执行这个函数的时候就不再是函数的执行了,而是获取这个生成器.
    • return和yield的区别:
      • yield是分段来执行一个函数,return是直接停止执行函数.
    • 特点:
      • 生成器的特点和迭代器一样,取值方式和迭代器一样(__next__( ),send( ):给上一个yield传值)
  • 生成器函数:
    • 和普通函数没有区别,里面有yield的函数就是生成器函数
    • 生成器函数在执行的时候,默认不会执行函数体,返回生成器
    • 通过生成器的__next__( )分段执行这个函数
    • send( )给上一个yield传值,不能在开头(因为没有上一个yiel),最后一个yield也不可以用send(因为没有下一个yield)
  •  1 def eat():
     2     print('吃什么呢')
     3     a = yield '馒头'
     4     print('a=',a)
     5     b = yield '面条'
     6     print('b=',b)
     7     c = yield '水果'
     8     print('c=',c)
     9     yield '安排一下!'
    10 eats = eat()          #获取生成器
    11 ret1 = eats.__next__()
    12 print(ret1)
    13 ret2 = eats.send('胡辣汤')
    14 print(ret2)
    15 ret3 = eats.send('冰激凌')
    16 print(ret3)
    17 ret4 = eats.send('蛋挞')
    18 print(ret4)

  • 推导式:
    • 1)列表推导式[结果 for循环 条件筛选]
    • 2)字典推导式{结果 for循环 条件筛选}
    • 3)集合推导式{key for循环 条件}
  • 生成器表达式
    • (结果 for循环 条件)
    • 特点:
      • 1.惰性机制
      • 2.只能向前
      • 3.节省内存

转载于:https://www.cnblogs.com/mixw/p/9469718.html

Python_Mix*生成器,生成器函数,推导式,生成器表达式相关推荐

  1. 生成器函数,推导式,生成器表达式

    一.生成器 1生成器的定义 生成器的本质是迭代器 生成器一般由生成器函数或者生成器表达式来创建 生成器是手写的迭代器 2.生成器的特点 生成器的特点和迭代器一样. (1)惰性机制 (2)节省内存 (3 ...

  2. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  3. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  4. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  5. 生成器 生成器函数 各种推导式 生成器表达式

    生成器 本质就是迭代器. 一个一个的创建对象 创建生成器的方式: 1. 生成器函数 2. 通过生成器表达式来获取生成器 3. 类型转换(看不到) def func():print("我叫周润 ...

  6. python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式

    1.生成器 生成器的本质是迭代器. 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 #函数 deffunc():prin ...

  7. python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式

    python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...

  8. 列表推导式 生成器表达式

    推导式 comprehensions(又称解析式):是 Python 中很强大的.很受欢迎的特性,具有语言简洁,速度快等优点 列表推导式 就是一个简单的公式,我们用这个列表推导式,把你好几行的for循 ...

  9. python列表推导式实现从1加到100_python之生成器和列表推导式

    一.生成器函数 1.生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.用以下两种方式构建一个生成器: ...

  10. python (八)迭代器、生成器、列表推导式

    一.迭代器 1.先来讲讲什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.怎么判断是不是一个可迭代对象 判定方法:内部含有'__iter__'方法的数据就 ...

最新文章

  1. 慕课网Flask高级编程实战-10.鱼书业务处理
  2. Mybatis之一级缓存,二级缓存
  3. rsync 常见错误与解决方法整理
  4. 改变,从跨出第一步開始——记海大ITAEM团队首次IT讲座掠影
  5. tcp-ip协议详解二知识进阶
  6. 将十六进制的字符串转换成整数
  7. 最优化评分法c语言,最优化方法及其实现(Optimization-Algorithm)C语言
  8. 2.变量/字符串/if/while/数据类型
  9. boost::mpl模块实现replace_if相关的测试程序
  10. JavaScript高级笔记
  11. Docker遇到的一些问题和感想
  12. .net里面实现javascript中的 escape 和 unescape 功能
  13. 阿铭linux苹果客户端,2018年5月 – 阿铭Linux
  14. 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
  15. MySQL从字符串提取数字
  16. PHP之——官方手册下载地址
  17. 如何坚持完成自己的目标和计划?
  18. 八年级计算机word操作,【初二专区】中考信息技术考试(三),Word操作综述+练习!...
  19. 方腔驱动流的simple算法(附matlab与c++程序)
  20. java窗体 个人信心_帮忙写下代码java swing,个人信息实例

热门文章

  1. 移动应用图标生成工具,一键生成所有尺寸的应用图标
  2. SQL中的count()、sum()函数内加条件
  3. C#中唯一的三元运算符
  4. Ajax实现页面自动刷新实例解析
  5. 为什么我电脑的所有浏览器都开不了网页
  6. PHP树形结构数据增加每层的级别
  7. Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的安装
  8. fd 句柄_FD_CLOEXEC用法及原因-文件句柄
  9. js如何监听元素事件是否被移除_javascript:什么是js事件?(上)
  10. relocation R_X86_64_PC32 against symbol lua_newstate can not be used when making a shared object