Python 生成器与迭代器

迭代器是一种可以重复做某种事情的对象,python中实现了__iter__方法的对象都是可迭代的,实现了next()方法的对象是迭代器。

简单地说,实现了__iter__和next是迭代器的基本两个函数,所有的迭代器都应该具备这两个方法。

如下为一个迭代器

class Fib:
    def __init__(self):
        self.a,self.b = 0,1
    def next(self):
        self.a,self.b = self.b,self.a+self.b
        return self.a
    def __iter__(self):
        return self
fibs = Fib()
for i in fibs:
  if i < 1000:
    print i

生成器则是一个函数,他是由yield语句来触发的,程序运行完yield语句时会停止,并保存状态(像一个中断处理),返回一个值,等待下一次激活。

def fib():
    a,b = 0,1
    while 1:
        a,b = b,a+b
        yield a
for f in fib():
    if f < 1000:
        print f
    else:
        break

这个例子与上一个完成同样的效果。

生成器与迭代器都是可以迭代,并且带向迭代。

转载于:https://www.cnblogs.com/ethanchou/p/3330085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值