栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python中yield的用法详解——结合代码清晰的解释,小白也能看懂

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中yield的用法详解——结合代码清晰的解释,小白也能看懂

迭代器与生成器:
01、迭代器
①、iter函数
②、next函数
③、自定义迭代器
02、生成器
①、生成器表达式
②、yield函数


前言

废话不多说,跟着上面的列举的目录点,下来来具体介绍:


一、迭代器

定义:迭代器(Iterator)是指可以通过next函数不断获取下一个值的对象。
在python中生成迭代器的方式有两种:
第一种,是利用iter()函数把python中常用的可迭代对象转换为迭代器,具体看我下面代码,结合我代码备注则可了解。
第二种,是在for循环中使用小括号来生成迭代器,具体看我下面代码,结合我代码备注则可了解。
迭代器生成后,使用next()函数来调用输出值。

二、使用步骤 1.第一种方法,用iter()函数来生成迭代器

代码如下(示例):

#定义一个list:
list01 = [1,3,4,5,7]
#利用iter函数把list转换为迭代器
list_iter = iter(list01)
#利用next()方法来访问输出生成的迭代器里面值,print一次只输出一个值:
print("第一次输出", next(list_iter))
print("第二次输出", next(list_iter))
2.第二种方法,利用for循环加小括号()来生成迭代器

代码如下(示例):

#用小括号则生成生成器,也可以节约内存,访问里面的数据用for循环去遍历:
list01 = (i*i for i in range(1,10) if i % 2 == 0)
#生成迭代器list01后,可用for循环来遍历,输出它里面的数据:
for o in list01:
    print("循环输出",o)
#也可以用next()方法来一个一个输出值,print一次则输出一个值:
print("第一次输出", next(list01))
print("第二次输出", next(list01))
# 注意:上面for循环把list01里面的数据,全部输出后,下面再print,则会报错。这个和迭代器的特性:数据都是主保存在一个变量里面有关

---
# 一、迭代器
**定义:迭代器(Iterator)是指可以通过next函数不断获取下一个值的对象。**
**在python中生成迭代器的方式有两种:**
第一种,是利用iter()函数把python中常用的可迭代对象转换为迭代器,具体看我下面代码,结合我代码备注则可了解。
第二种,是在for循环中使用小括号来生成迭代器,具体看我下面代码,结合我代码备注则可了解。
**迭代器生成后,使用next来调用输出值。**

# 二、使用步骤
## 1.第一种方法,用iter()函数来生成迭代器
代码如下(示例):

```c
#定义一个list:
list01 = [1,3,4,5,7]
#利用iter函数把list转换为迭代器
list_iter = iter(list01)
#利用next()方法来访问输出生成的迭代器里面值,print一次只输出一个值:
print("第一次输出", next(list_iter))
print("第二次输出", next(list_iter))
一、生成器

**定义:~~在python中使用了yield的函数被称为生成器(generator)

**生成器其实也是一种迭代器,因为它直接用yield来生成,所以更简单,方便。
**生成器生成后,主要用next()函数来调用输出值。

二、使用步骤 直接用yield()函数来生成生成器

代码如下(示例):
def func():
for i in range(0, 3):
“”“yield可以简单看做return函数,程序运行到这里就直接返回i值”“”
yield i
“”“第二次运行next函数时候,会从上次运行到yield处向下运行,运行完再返回再次运行func()函数,然后遇到yield再次退出函数并且第二次运行函数,程序还会记得上二一次退出函数时,yield的值”“”
print(“第二次运行函数,print打印i的值,实际是第一次函数返回的i值:”,i)

f = func()
print(“第一次运行函数,函数返回i的值:”,next(f))
print(“*”*20)
print(“第二次运行函数,函数返回i的值:”,next(f))

总结

迭代器和生成器主要作用:
1、用于特殊场景下,如:需要每次调用只输出一次值,二次调用时,还会从上次退出地方再次执行输出。
2、节约内存,如果用list等数据类型,就要保存所有的变量数据,但是迭代器和生成器,则只会以遍历方式,来保存一个或几个变量,大大节约了内存资源,如:爬虫时候,需要把爬取到的成千上万个图片uil临时保存保存,如果用生成器来存储则更加节省内存

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号