python之yield表达式学习
作者:junjie 发布时间:2022-05-06 14:51:43
标签:python,yield
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是一样的。但是(重点来了):


猜你喜欢
- <script> function isIPv6(str) { return str.mat
- int(x, [base])功能:函数的作用是将一个数字或base类型的字符串转换成整数。函数原型:int(x=0)int(x, base=
- 本文为大家分享了TensorFLow用Saver保存和恢复变量的具体代码,供大家参考,具体内容如下建立文件tensor_save.py, 保
- MySQL安装程序为您所有的MySQL软件需求提供了一个易于使用,基于向导的安装体验。产品中包含以下最新版本:MySQL服务器MySQL连接
- 💃今天看案例的时候看见了一个关于pandas数据的内存压缩功能,特地来记录一下。🎒先说明一下情况,pandas处理几百兆的dataframe
- 优化可能带来的问题优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。优化手段本来就有很大的风险,只不过你没能力意识到和预见到
- 0. 引言有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片。然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便。本
- 引言事情是这样的,最近在做开源软件供应链安全相关的项目,之前没了解这方面知识的时候感觉服务器被黑,数据库被删,网站被攻,这些东西都离我们太遥
- 在许多用SQL Server实现的新的企业系统设计中,系统设计师需要在给数据结构和管理应用程序逻辑的定位上做出具有关键性意义的决定。SQL
- 制作一个查看器可以查看豆瓣前100名电影的信息,当然这个爬取信息比较简单。所以重点放在 QThread 多线程的应用上面。QThread 子
- 我就废话不多说了,直接上代码吧!from numpy import *import numpy as npimport cv2, os, m
- 用习惯列表解析之后会觉得超级酷,所以在尝试使用列表解析,把循环什么的写在一行里面。使用if的时候什么时候必须要有else,什么时候可以没有e
- 协同过滤在 用户 —— 物品(user - item)的数据关系下很容易收集到一些偏好信息(preference),比如评分。利用这些分散的
- 用flask时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码,而不是中文,如下图。虽然不影响接口的读取,但是可读性太
- 切片操作首先支持下标索引,通过[ N:M :P ]操作索引正向从0开始,逆向从-1开始N:切片开始位置M:切片结束位置(不包含)P:指定切片
- 前言一年一度的虐狗节终于过去了,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的。程序员在晒什么,程序员在加班。但是礼物还是少不了的,送什么好?
- 首先说明,Supervisor 只能安装在 Python 2.x 环境中!但是基本上所有的 Linux 都同时预装了 Python 2.x
- Python中的魔法方法方法名说明__str__用于返回对象的描述__iter__使类可以迭代__getitem__按照下标获取类元素,例如
- 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个
- JOSN字符串转换为自定义类实例对象有时候我们有这种需求就是把一个JSON字符串转换为一个具体的Python类的实例,比如你接收到这样一个J