尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python迭代器_高级

Python迭代器_高级
📅 发布时间:2026/6/20 7:00:58
点击查看代码
"""
案例:演示自定义迭代器迭代器对象&可迭代对象定义:1、迭代器对象:实现了 __iter__() 和 __next__() 方法的对象,称为迭代器对象,该方法在每次调用时返回下一个值2、可迭代对象:实现了 __iter__() 或 __getitem__() 方法的对象,称为可迭代对象,该方法返回一个迭代器对象迭代器对象&可迭代对象关键区别:1、功能差异:可迭代对象是数据的容器,迭代器是数据访问的工具2、状态保持:迭代器对象会记录当前迭代位置,可迭代对象本身不记录状态3、直接使用:可迭代对象不能直接调用 next(),迭代器对象可以"""class NumberIterator:"""迭代器类 - 负责遍历逻辑"""def __init__(self, numbers):self.numbers = numbersself.index = 0def __iter__(self):return selfdef __next__(self):if self.index >= len(self.numbers):raise StopIterationvalue = self.numbers[self.index]self.index += 1class NumberCollection:"""可迭代对象类 - 负责存储数据"""def __int__(self, numbers=None):self.numbers = numbers if numbers is not None else []def __iter__(self):# 返回一个新的迭代器对象return NumberIterator(self.numbers)def add_number(self, number):# 添加数字到集合中self.numbers.append(number)def get_size(self):# 获取集合大小return len(self.numbers)def get_sum(self):# 计算集合元素之和return sum(self.numbers)def get_max(self):# 获取最大值return max(self.numbers)def get_min(self):# 获取最小值return min(self.numbers)if __name__ == '__main__':# 创建可迭代对象collection = NumberCollection([1, 2, 3, 4, 5])print("=== 使用for循环迭代 ===")for num in collection:print(num)print("=== 使用手动迭代 ===")iterator1 = iter(collection)try:print(next(iterator1))print(next(iterator1))print(next(iterator1))print(next(iterator1))print(next(iterator1))print(next(iterator1))  # 抛出StopIterationexcept StopIteration as e:print("迭代已完成")print("\n=== 验证对象类型 ===")from collections.abc import Iterable, Iteratorprint(f"collection是可迭代对象: {isinstance(collection, Iterable)}")print(f"iterator1是迭代器: {isinstance(iterator1, Iterator)}")print("\n=== 测试集合操作 ===")collection.add_number(6)print(f"集合大小: {collection.get_size()}")print(f"元素之和: {collection.get_sum()}")print(f"最大值: {collection.get_max()}")print(f"最小值: {collection.get_min()}")print("\n=== 多个独立迭代器测试 ===")iterator2 = iter(collection)iterator3 = iter(collection)print(f"iterator2第一个元素: {next(iterator2)}")print(f"iterator3第一个元素: {next(iterator3)}")print(f"iterator2第二个元素: {next(iterator2)}")print(f"iterator3第二个元素: {next(iterator3)}")

相关新闻

  • 字符编码体系详解:从ASCII到UTF-8的演进与实践
  • 按位翻转
  • JavaEE--SpringIoC - 详解

最新新闻

  • 2026年6月头部宠物皮肤科医院推荐,宠物眼科/猫咪体检/异宠/宠物皮肤/宠物骨科/猫咪绝育/宠物,宠物皮肤科专家找哪家 - 品牌推荐师
  • 深入解析MPC8360E/MPC8358E处理器接口电气特性与硬件设计实践
  • LLM嵌入技术在表格数据预测中的应用与实践
  • 渗透测试实战:CDN绕过与子域名爆破核心技术解析
  • 5个实用技巧:用FitGirl游戏启动器轻松管理你的压缩版游戏库
  • 沃尔玛成钓鱼攻击首选目标:高仿真品牌钓鱼的攻防解析与防范指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号