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的web框架中的Model的教程
Apr 29 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
关于python多重赋值的小问题
Apr 17 Python
python实现翻转棋游戏(othello)
Jul 29 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 Python
python实现会员管理系统
Mar 18 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
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
vue实现记事本功能
2019/06/26 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
python爬虫之遍历单个域名
2019/11/20 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
酒店员工检讨书
2014/02/18 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
java开发双人五子棋游戏
2022/05/06 Java/Android