python 可迭代对象、迭代器(手写)、生成器

先上图

三者关系图

三者的关系如图所示,接下来再用文字对其进行说明。(按 本人理解 来写的)

可迭代对象:

具有__iter__()方法的对象,就是可迭代对象,常见的有列表、字典、集合。

可迭代对象在实现了__iter__()方法后,就会生成迭代器。

迭代器:

具有__iter__()、next()方法,用__next__()方法来进行取值。主要特点为惰性求值(lazily produce),迭代器只保存基本的数据和生成数据的方法,调用__next__()时,才会具体计算并返回数据。这样的好处是在处理大数据时,不会占用电脑大量的空间资源,降低大数据处理的硬件要求。

手写迭代器:

class feibo(object):
    a = 0
    b = 1
    def __next__(self):
        self.a,self.b = self.b,self.a+self.b
        return self.a
    def __iter__(self):
        return self

生成器:

是一个特殊的迭代器。一般通过生成器表示和生成器函数(关键字为yield)产生。

tips:

python3中,range方法生成的是一个range对象(range object)具有迭代器的特性,但不是迭代器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值