python中迭代器的应用场景

1.迭代器的应用场景

 

1).  如果数列的数据规模巨大

2).  数列有规律,但是依靠列表推导式描述不出来

 

2.数学中有个著名的斐波拉契数列(Fibonacci),数列中第⼀个数0,第⼆个数1,其后的每⼀个数都可由前两个数相加得到:

0,    1,    1,   2,    3,    5,   8,    13,    21,   34,    ...

现在我们想要通过for...in...循环来遍历迭代斐波那契数列中的前n个数。那么这个斐波那契数列我们就可以⽤迭代器来实现,每次迭代都通数学算来⽣成下个数。

classFibIterator(object):

    """fib数列迭代器"""

    def __init__(self, n):

        """"""

        self.num1 = 0

        self.num2 = 1

        self.n = n  # 用来保存迭代的总次数

        self.i = 0  # 用来记录迭代次数

 

    def __next__(self):

        # 判断是否迭代结束,如果没有到达迭代次数,则返回数据

        if self.i < self.n:

            # 保存要返回的值

            item = self.num1

 

            # 计算num1, num2的值,方便下次迭代返回

            self.num1, self.num2 = self.num2,self.num1 + self.num2

 

            # 记录迭代次数

            self.i += 1

            return item

        else:

            # 到达了迭代次数,抛出异常

            raise StopIteration

 

    def __iter__(self):

        return self

 

 fib =FibIterator(20)

li = list(fib)

print(li)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值