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提取页面内url列表的方法
May 25 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python实现黑客字幕雨效果
Jun 21 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python中常用的内置方法
Jan 28 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
Python如何重新加载模块
Jul 29 Python
Python类的继承super相关原理解析
Oct 22 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 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
音乐播放用的的几个函数
2006/09/07 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python闭包实现计数器的方法
2015/05/05 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
python 制作简单的音乐播放器
2020/11/25 Python
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
电信营业员自我评价分享
2014/01/17 职场文书
销售业务员岗位职责
2014/01/29 职场文书
端午节活动策划方案
2014/03/09 职场文书
模具专业求职信
2014/06/26 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
义诊活动总结
2015/02/04 职场文书
农村婚庆主持词
2015/06/29 职场文书
关于军训的感想
2015/08/07 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
Python中json.dumps()函数的使用解析
2021/05/17 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python