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中利用sqrt()方法进行平方根计算的教程
May 15 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
python中while和for的区别总结
Jun 28 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
python 多线程爬取壁纸网站的示例
Feb 20 Python
python实现简单文件读写函数
Feb 25 Python
Python入门之基础语法详解
May 11 Python
python读取mnist数据集方法案例详解
Sep 04 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
vue+iview分页组件的封装
2020/11/17 Vue.js
python中sets模块的用法实例
2014/09/30 Python
Python列表计数及插入实例
2014/12/17 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
采购助理岗位职责
2014/02/16 职场文书
亮剑观后感
2015/06/05 职场文书
小学思品教学反思
2016/02/20 职场文书