• 生成器:

    • 生成器的本质就是迭代器
    • 生成器一般由生成器函数或者生成器表达式来创建,其实就是手写的迭代器
  •  def func():
    print('abc')
    yield 222 #由于函数中有了yield ret = func()
    print(ret) #我们执行函数的时候实际上是获取生成器 结果:
    <generator object func at 0x10567ff68>
    这个叫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)
  •  def eat():
    print('吃什么呢')
    a = yield '馒头'
    print('a=',a)
    b = yield '面条'
    print('b=',b)
    c = yield '水果'
    print('c=',c)
    yield '安排一下!'
    eats = eat() #获取生成器
    ret1 = eats.__next__()
    print(ret1)
    ret2 = eats.send('胡辣汤')
    print(ret2)
    ret3 = eats.send('冰激凌')
    print(ret3)
    ret4 = eats.send('蛋挞')
    print(ret4)
  • 推导式:
    • 1)列表推导式[结果 for循环 条件筛选]
    • 2)字典推导式{结果 for循环 条件筛选}
    • 3)集合推导式{key for循环 条件}
  • 生成器表达式
    • (结果 for循环 条件)
    • 特点:
      • 1.惰性机制
      • 2.只能向前
      • 3.节省内存

Python_Mix*生成器,生成器函数,推导式,生成器表达式的更多相关文章

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

    一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...

  2. Day12--Python--生成器,生成器函数,推导式,生成器表达式

    一.昨日内容回顾 惰性机制(只有执行__next__()才会取值)二.今日主要内容 1.生成器 生成器:本质是迭代器,写法和迭代器不一样.用法和迭代器一样. ※生成器记录的是代码 2.生成器函数 生成 ...

  3. day13 python生成器函数 推导式 生成器

    day13 python   一.生成器     生成器的本质就是迭代器     生成器的特点和迭代器一样. 取值方式和迭代器一样(__next__())     由生成器函数或生成器表达式来创建   ...

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

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

  5. Python进阶(四)----生成器、列表推导式、生成器推导式、匿名函数和内置函数

    Python进阶(四)----生成器.列表推导式.生成器推导式.匿名函数和内置函数 一丶生成器 本质: ​ 就是迭代器 生成器产生的方式: ​ 1.生成器函数

  6. python全栈开发day13-迭代器、生成器、列表推导式等

    昨日内容:函数的有用信息.带参数的装饰器.多个装饰器修饰一个函数 迭代器 可迭代对象:内部含有__iter__方法 迭代器 定义:可迭代对象.__iter__()就是迭代器,含有__iter__且__ ...

  7. python基础(14):生成器、列表推导式

    1. 生成器 什么是⽣成器?⽣成器实质就是迭代器. 在python中有三种⽅式来获取⽣成器: 1. 通过⽣成器函数 2. 通过各种推导式来实现⽣成器 3. 通过数据的转换也可以获取⽣成器 ⾸先,我们先 ...

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

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

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

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

随机推荐

  1. CentOS 7编译OpenWRT

    安装必要的依赖 yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel ...

  2. bzoj 4770 图样 - 概率与期望 - 动态规划

    题目传送门 传送门I 传送门II 题目大意 有一个$n$个点的完全图,每个点的权值是$[0, 2^{m})$中的随机整数,两点间的边的权值是两点点权的异或和,问它的最小异或生成树的边权和的期望. 考虑 ...

  3. Android 全局使用第三方字体

    给APP全局设置字体主要分为两个方面来介绍 一.给原生界面设置第三方字体 1.准备工作-下载第三方字体:传送门 将文件放入工程assets目录下.(一般个人习惯单独命名一个文件夹放字体文件,也可直接放 ...

  4. ionic3开发环境的搭建 记录!

    总的来说都很顺利,毕竟已经打包成功在手机上面跑起来了,给的两个教程很给力,基本没有误差,照着步骤敲没问题,打包命令有所更新目前已修正,吃一堑长一智下面说下其中遇到的问题:1.第一点是ionic ser ...

  5. VUE之图表操作

    参考 v-charts文档有详细说明,不多做介绍. 感谢博主的梳理,我在此基础之上稍作修改 效果展示: 在工作中遇到了就记录下来,留作备用,以便今后查阅: 安装 npm install vue-sch ...

  6. npm --save-dev --save | -D -S区别

    -S就是--save的简写,就行npm默认一个start的字段,你可以不必输入npm run start 而只需输入npm start,这两个效果是一样的.-D就是--save-dev 这样安装的包的 ...

  7. Cow Cycling 动态规划

    1552: Cow Cycling 时间限制(普通/Java):1000MS/10000MS     内存限制:65536KByte总提交: 39            测试通过:20 描述 The ...

  8. Windows下安装Anaconda

    Windows下安装Anaconda   Anaconda介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学 ...

  9. Linux中的wheel用户组是什么?

    在Linux中wheel组就类似于一个管理员的组. 通常在Linux下,即使我们有系统管理员root的权限,也不推荐用root用户登录.一般情况下用普通用户登录就可以了,在需要root权限执行一些操作 ...

  10. Hash索引和BTree索引区别【转】

    索引是帮助mysql获取数据的数据结构.最常见的索引是Btree索引和Hash索引. 不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引:而Mermory默认的索引是 ...