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中的hashlib和base64加密模块使用实例
Sep 02 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
django输出html内容的实例
May 27 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
python根据多个文件名批量查找文件
Aug 13 Python
softmax及python实现过程解析
Sep 30 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
基于python判断目录或者文件代码实例
Nov 29 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
phpmyadmin操作流程
2006/10/09 PHP
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python中常见错误及解决方法
2020/06/21 Python
python实现银行账户系统
2021/02/22 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
几个Shell Script面试题
2014/04/18 面试题
护士专业推荐信
2013/11/02 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
教师自我剖析材料
2014/09/29 职场文书
后备干部推荐材料
2014/12/24 职场文书
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server