python3 迭代器&生成器

本文介绍了Python中生成器和迭代器的概念及使用方法,包括列表生成式的局限性、生成器的定义方式及其与迭代器的关系。此外还探讨了如何使用send()方法向yield传值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前戏:列表生成式

等于

用列表生成式生成列表。需要将所有数据生成到内存中,占用空间,如果数据太多。生成数据就会耗时较久。

例如需要运行卡顿一下.....

 

定义一个生成器:定义时不生成任何数据,只有通过for循环调用,或者生成器本身自带的__next__()方法来调用 。

注意:1、__next__()方法调用时,只能向下调用,无法向上调用。

   2、内存中只保存当前调用生成的这一个 数据,已经取(生成)过的数据,无法再次访问。只能再次从头循环取。。

用函数制作一个生成器:yield 关键字

生成器只有__next__()方法获取已有的yield值

 

 

 新知识:异常捕获、next内置方法两种用法

 

 send()方法:给yield传一个值,同时进行__next__()调用,进行生成器的返回:取yield本次获取的值。并进行本次代码执行。

__next__()只进行唤醒本次取值,无法给yield传值。

rend()可以给yield传值,并唤醒取值。

迭代器:

:如字符串、列表、元组、字典、generator生成器。等...

可被for循环取值的对象为可迭代对象。

 

 

迭代器:可以使用__next__()不断循环返回下一个值得对象为“迭代器”

 如何看一个对象(或者说变量)是否是迭代器:使用dir(对象名) 看所有的方法中是否有__next__()方法

 饶舌:生成器一定是迭代器,迭代器不一定是生成器。

 

 

 将一个可迭代对象(如列表、字典、元组、字符串)iter()变成迭代器

 

转载于:https://www.cnblogs.com/zhangmingda/p/9059616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值