python迭代器

迭代器的特征可以从两个方法切入
__next__和__iter__这两个方法
如果只包含__iter__方法,那么只能说可迭代,不能称之为迭代器,一般可迭代的每次循环都会生成一个新的迭代器,而迭代器每次循环使用的都是同一迭代器,这里可能阐述的有点模糊,下面列举一个例子
在这里插入图片描述
由上可以看出,ret其实是一个生成器,而生成器也是一个迭代器,但迭代器不能说是一个生成器
第一次循环,可以完整的取出ret中所有内容,然而第二次循环什么也没取出,原因是上一次循环已经把内容全部取出,所以这次无法再从ret中获取值,这里循环实际调用的是__next__方法
下面是可迭代的一个例子,对比可明显了解这两者的区别
在这里插入图片描述
我们这里了解的两个方法带有两组双下划线,而这种方法被称为双下方法。见名知意。
这里插入一个交集的概念
如图
在这里插入图片描述
我们这里介绍两个协议:可迭代协议和迭代器协议
可迭代协议:只要含有__iter__的方法都是可迭代的
迭代器协议:内部含有__iter和__next方法的就是迭代器

迭代器的好处:节省内存空间
迭代器不会在内存中再占用一大块内存,而是随着循环每次生成一个,每次__next__给我们一个
好了,迭代器的概念今天就介绍到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值