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计算三角函数之atan()方法的使用
May 15 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
python删除过期log文件操作实例解析
Jan 31 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
python儿童学游戏编程知识点总结
Jun 03 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
Python requests库参数提交的注意事项总结
Mar 29 Python
pandas 操作 Excel操作总结
Mar 31 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 Python
Python数据可视化之绘制柱状图和条形图
May 25 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
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
对pandas中Series的map函数详解
2018/07/25 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
通过实例解析Python return运行原理
2020/03/04 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
编辑个人求职信范文
2013/09/21 职场文书
毕业生自我鉴定
2013/11/05 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript