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中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Python实现的密码强度检测器示例
Aug 23 Python
python处理“
Jun 10 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
python中rc1什么意思
Jun 19 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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
Terran魔法科技
2020/03/14 星际争霸
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python语言元素知识点详解
2019/05/15 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
电子商务专业求职信
2014/03/08 职场文书
旷工检讨书1000字
2015/01/01 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL