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

Python迭代器_高级

点击查看代码
"""
案例:演示自定义迭代器迭代器对象&可迭代对象定义: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)}")
http://www.rkmt.cn/news/48737.html

相关文章:

  • 字符编码体系详解:从ASCII到UTF-8的演进与实践
  • 按位翻转
  • JavaEE--SpringIoC - 详解
  • 2025年比较好的非标设备机架产品推荐排行榜单,非标设备机架公司精选实力品牌榜单发布
  • Codeforces-2148
  • 辽源适配冻干机西林瓶灌装加塞机推荐
  • C#+WPF?​就是工业上位机,用Python+Qt还
  • ITR经典案例 | 燕千云携手国内知名软件供应商,AI驱动客户服务流升级
  • 彻底解决WPS在扩展屏出现的下拉错位现象
  • 丽江小药厂适用半自动西林瓶灌装生产线
  • 2025年北京继承官司律师机构推荐,这些律所值得信赖,北京丰台继承律师/北京离婚纠纷/离婚纠纷律师/遗产继承律师事务所维权机构选哪家
  • android app network monitor with mitmweb
  • 详细介绍:Uniapp微信小程序开发:onPullDownRefresh
  • 2025年市场技术好的ERP管理系统口碑推荐榜,优秀的ERP服务商赋能企业生产效率提升与成本优化
  • 2025年汉口水泥砖厂家质量排行榜发布,水泥砖哪家专业鑫俊熙诚信务实提供高性价比服务
  • 2025年市面上做得好的板材货架厂家哪家强,重型货架超强承重/模具货架/伸缩管材货架/悬壁货架重型/钢板货架/流利式货架定制厂家哪家好
  • 岳阳折弯机上下模厂家推荐:技术实力与市场口碑解析
  • 线段树进阶(一) - idle
  • 2025年市场专业的河道护坡石笼网实力厂家怎么选择,抗冲击抗腐蚀石笼网/双隔板石笼网/六角石笼网源头厂家哪家好
  • 报表应用图表charts显示数据
  • 商业透明展示柜价格多少钱一平方济南市场行情
  • Koa系列教程:1. 创建项目
  • 2025年户外LED广告设备采购指南:优质供应商推荐,高铁广告/电梯框架广告/社区门禁广告/社区道闸广告/机场广告/电梯视频广告企业找哪家
  • Linux系统访问控制
  • 2025年市面上比较好的河道护坡石笼网直销厂家有哪些,抗冲击抗腐蚀石笼网/镀锌低碳钢丝石笼网/六角石笼网源头厂家哪个好
  • c++初学者的随笔记录_3(断点调试)
  • 魂斗罗单机经典版下载安装教程(2025新版)——完整安装与配置指南
  • 2025年主轴电机外壳质量大比拼:专业评测报告,国内主轴电机外壳供应商优质企业盘点及核心优势详细解读
  • 2025展厅/展馆/博物馆/VR虚拟展厅设计厂家推荐成都方和科技,专业打造多媒体数字展示空间!
  • 成都火锅2025年度榜单出炉,太古里这8家店值得N刷!美食/火锅/特色美食/烧菜火锅/社区火锅品牌口碑推荐榜