使用迭代器和生成器实现斐波拉契数列

一、使用迭代器实现斐波拉契数列

class Fib(object):
    """
    迭代器生成斐波拉契数列

    :param max_value:最大范围
    :returns :所有的斐波拉契数列

    """
    def __init__(self, max_value):
        self.cur = 0
        self.next = 1
        self.max_value = max_value

    def __iter__(self):
        return self

    def __next__(self):
        if self.cur <= self.max_value:
            result = self.cur
            self.cur, self.next = self.next, self.cur+self.next
            return result
        else:
            raise StopIteration()

二、使用生成器

def Fib(max_value):
    """
    生成器生成斐波拉契数列

    :param max_value:最大范围
    :returns :所有的斐波拉契数列

    """
    cur_value = 0
    next_value = 1
    while cur_value <= max_value:
        yield cur_value
        cur_value, next_value = next_value, cur_value + next_value

使用迭代器和生成器的好处是节省内存、惰性求值

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目标:统计文件中指定字符串出现的次数,如计算f1.txt中“voidxin”出现了几次。1、maper类如下: 2...
    voidxin阅读 5,356评论 0 0
  • 临冬将至 屋子里仅剩一盏烛光 自然在交替着 悄悄的 无声息 草席裹着我 那气味让我眷念起 和族人一同收获的农忙 挥...
    杉沐顿开阅读 1,014评论 0 0