Python_Mix*生成器,生成器函数,推导式,生成器表达式
- 生成器:
- 生成器的本质就是迭代器
- 生成器一般由生成器函数或者生成器表达式来创建,其实就是手写的迭代器
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传值)
- 在Python中可以通过三种方式来获取生成器:
- 生成器函数:
- 和普通函数没有区别,里面有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生成器的定义 生成器的本质是迭代器 生成器一般由生成器函数或者生成器表达式来创建 生成器是手写的迭代器 2.生成器的特点 生成器的特点和迭代器一样. (1)惰性机制 (2)节省内存 (3 ...
- python之生成器(~函数,列表推导式,生成器表达式)
一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...
一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...
- 生成器 生成器函数 各种推导式 生成器表达式
生成器 本质就是迭代器. 一个一个的创建对象 创建生成器的方式: 1. 生成器函数 2. 通过生成器表达式来获取生成器 3. 类型转换(看不到) def func():print("我叫周润 ...
- python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式
1.生成器 生成器的本质是迭代器. 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 #函数 deffunc():prin ...
- python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式
python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...
- 列表推导式 生成器表达式
推导式 comprehensions(又称解析式):是 Python 中很强大的.很受欢迎的特性,具有语言简洁,速度快等优点 列表推导式 就是一个简单的公式,我们用这个列表推导式,把你好几行的for循 ...
- python列表推导式实现从1加到100_python之生成器和列表推导式
一.生成器函数 1.生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.用以下两种方式构建一个生成器: ...
- python (八)迭代器、生成器、列表推导式
一.迭代器 1.先来讲讲什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.怎么判断是不是一个可迭代对象 判定方法:内部含有'__iter__'方法的数据就 ...
最新文章
- 慕课网Flask高级编程实战-10.鱼书业务处理
- Mybatis之一级缓存,二级缓存
- rsync 常见错误与解决方法整理
- 改变,从跨出第一步開始——记海大ITAEM团队首次IT讲座掠影
- tcp-ip协议详解二知识进阶
- 将十六进制的字符串转换成整数
- 最优化评分法c语言,最优化方法及其实现(Optimization-Algorithm)C语言
- 2.变量/字符串/if/while/数据类型
- boost::mpl模块实现replace_if相关的测试程序
- JavaScript高级笔记
- Docker遇到的一些问题和感想
- .net里面实现javascript中的 escape 和 unescape 功能
- 阿铭linux苹果客户端,2018年5月 – 阿铭Linux
- 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
- MySQL从字符串提取数字
- PHP之——官方手册下载地址
- 如何坚持完成自己的目标和计划?
- 八年级计算机word操作,【初二专区】中考信息技术考试(三),Word操作综述+练习!...
- 方腔驱动流的simple算法(附matlab与c++程序)
- java窗体 个人信心_帮忙写下代码java swing,个人信息实例
热门文章
- 移动应用图标生成工具,一键生成所有尺寸的应用图标
- SQL中的count()、sum()函数内加条件
- C#中唯一的三元运算符
- Ajax实现页面自动刷新实例解析
- 为什么我电脑的所有浏览器都开不了网页
- PHP树形结构数据增加每层的级别
- Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的安装
- fd 句柄_FD_CLOEXEC用法及原因-文件句柄
- js如何监听元素事件是否被移除_javascript:什么是js事件?(上)
- relocation R_X86_64_PC32 against symbol lua_newstate can not be used when making a shared object