python之yield表达式学习


Posted in Python onSeptember 02, 2014

python中有一个略微奇怪的表达式叫yield expression,本文就来探究一下这是个什么东西。一步一步来。

iterable

mylist = [1,2,3]

for item in mylist:

    print str(item)

mylist是一个列表(list),我们可以逐条取出每一个item,这个过程叫做iteration。像list这样可以用”for…in…”依次遍历的对象被称为iterable,其他的iterable还有string、tuple、dict等。iterable的一个特点是所有的item会存储到内存中,这样会产生一些不便和不利的地方,于是催生了generator(后面讲到)。

list comprehension(列表推导式)

mylist = [x*x for x in range(3)]

表达式右边是一个for循环的简写形式,用[]包裹起来(称为list comprehension),表达式的值是一个list,我们可以像普通list那样使用”for…in…”遍历其元素,如:
for item in mylist:

    print str(item)

generator

generator

对上面的list comprehension稍作修改:

mygenerator = (x*x for x in range(3))

for item in mygenerator:

    print item

可以看到只是把[]换成了(),这时表达式的值不再是list,而是一个generator。

generator也属于iterable,但是其调用方式非常特别。

yield

def creatGenerator():

    mylist = range(3)

    for x in mylist:

        yield x*x

        

mygenerator = creatGenerator()
for x in mygenerator:

    print(x)

yield的使用方法和return是一样的。但是(重点来了):
Python 相关文章推荐
python BeautifulSoup使用方法详解
Nov 21 Python
Python读取键盘输入的2种方法
Jun 16 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
python爬虫实现中英翻译词典
Jun 25 Python
python创建n行m列数组示例
Dec 02 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
基于python3实现倒叙字符串
Feb 18 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 Python
Python Django模型详解
Oct 05 Python
python中的hashlib和base64加密模块使用实例
Sep 02 #Python
python多线程编程中的join函数使用心得
Sep 02 #Python
python中的函数用法入门教程
Sep 02 #Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 #Python
python爬虫入门教程之糗百图片爬虫代码分享
Sep 02 #Python
python批量同步web服务器代码核心程序
Sep 01 #Python
寻找网站后台地址的python脚本
Sep 01 #Python
You might like
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
PHP分享图片的生成方法
2018/04/25 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
python实现linux下抓包并存库功能
2018/07/18 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
深入了解python中元类的相关知识
2019/08/29 Python
Python 私有化操作实例分析
2019/11/21 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
浅析NumPy 切片和索引
2020/09/02 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
拖鞋店创业计划书
2014/01/15 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
领导欢迎词范文
2015/01/26 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫