当前位置: 首页 > news >正文

Python 自定义迭代器 --以斐波那契数列为例

class FibIterator:"""一个用于生成斐波那契数列的自定义迭代器类。生成不超过指定最大值 max_num 的所有斐波那契数。"""def __init__(self, max_num):"""初始化迭代器,设置上限值和斐波那契初始状态。"""self.max_num = max_num  # 用户指定的斐波那契数最大值(超过则停止)self.a, self.b = 0, 1   # 斐波那契数列的前两个值:F(0)=0, F(1)=1def __iter__(self):"""返回迭代器对象自身,使该类符合可迭代协议。"""return selfdef __next__(self):"""返回斐波那契数列中的下一个数。如果当前值超过 max_num,则抛出 StopIteration 终止迭代。"""if self.a > self.max_num:raise StopIteration  # 满足终止条件,结束 for 循环current = self.a              # 保存当前要返回的值self.a, self.b = self.b, self.a + self.b  # 更新为下一对斐波那契数return current                # 返回当前斐波那契数if __name__ == '__main__':# 使用示例:创建一个最大值为 10 的斐波那契迭代器fib_it = FibIterator(10)# 通过 for 循环自动调用 __iter__ 和 __next__for num in fib_it:print(num, end=" ")  # 输出:0 1 1 2 3 5 8

总结说明:

  • 功能FibIterator 是一个自定义迭代器,用于按需生成斐波那契数列中不超过 max_num 的所有数字。
  • 核心方法
    • __iter__:返回自身,表明该对象是迭代器。
    • __next__:定义每次迭代返回的值,并在满足条件时抛出 StopIteration
  • 斐波那契生成逻辑:使用两个变量 ab 动态更新数列,避免递归或列表存储,节省内存。
  • 终止条件:当前值 a > max_num 时停止,因此输出的是小于等于 max_num 的斐波那契数。
  • 输出示例:当 max_num=10 时,输出为 0 1 1 2 3 5 8(下一个数是 13,已超过 10,故不输出)。

这种方式体现了 Python 的迭代器协议,适用于需要惰性求值(lazy evaluation)或节省内存的场景。

http://www.dtcms.com/a/605265.html

相关文章:

  • AI一键PPT 2.0.3 一键智能生成
  • 232. 用栈实现队列
  • 如何在桌面创建网页快捷图标?(电脑 / 手机通用操作指南)
  • soular实战教程系列(2) - 如何统一管理TikLab帐号体系
  • k8s 发行说明(版本)
  • 批处理病毒原理、防御
  • 网站建设对企业的好处有哪些嘉兴网站制作建设
  • 几大网站类型网站建设所需人员
  • KAFKA自动修改所有以**开头的主题脚本
  • 记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与实现(源码+数据库+文档)
  • PHP Calendar
  • 用 Kafka 打通实时数据总线Flink CDC Pipeline 的 Kafka Sink 实战
  • Podman讲解
  • PHP EOF (Heredoc)
  • Spring Boot集成Kafka:最佳实践与详细指南
  • 【运维】Docker 入门
  • 手机网站的尺寸做多大的如何搭建wordpress商城
  • 百度商桥绑定网站正规的关键词优化软件
  • F280049C学习笔记之CMPSS
  • linux系统学习(10.shell基础)
  • 融合之力:金仓数据库“五个一体化“如何重塑国产数据库生态
  • 山西省第十九届职业院校技能大赛 网络建设与运维赛项 1. 系统安装答案解析
  • 做网站哪个服务商便宜菏泽网站设计培训
  • SLAM中的非线性优-3D图优化之轴角在Opencv-PNP中的应用(二)
  • Step-Audio-EditX
  • Notepad++编译C语言 | 如何高效配置和使用Notepad++进行C语言开发
  • Hadoop学习_week1
  • 靠谱的时序数据库哪家技术强
  • VR水污染体验系统——VR 里的碧水守护
  • 重构企业运维智慧:低代码 ITSM 知识管理平台的创新与实践