python之yield表达式学习

yipeiwu_com6年前Python基础

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而不是Java?

为什么入门大数据选择Python而不是Java?

马云说:“未来最大的资源就是数据,不参与大数据十年后一定会后悔。”毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰。今天我们就来...

python PrettyTable模块的安装与简单应用

python PrettyTable模块的安装与简单应用

prettyTable 是一款很简洁但是功能强大的第三方模块,主要是将输入的数据转化为格式化的形式来输出,即:以表格的形式的打印输出出来,能够起到美观的效果,今天简单地试用了一下, 一...

Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法

Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法

virtualenv简介 含义: virtual:虚拟,env:environment环境的简写,所以virtualenv就是虚拟环境,顾名思义,就是虚拟出来的一个新环境,比如我们使用的...

Django实现网页分页功能

Django实现网页分页功能

本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。 创建数据库步骤如下: 1.创建模型,代码如下: from djang...

全面剖析Python的Django框架中的项目部署技巧第1/2页

项目开始时是一个关键时刻,选择会对项目产生长期的影响。有很多关于如何开始使用Django框架的教程,但很少讨论如何专业地使用Django,或如何使用行业公认的最佳做法来确保你的项目规模的...