Python迭代器_高级

news/2025/11/13 18:45:27/文章来源:https://www.cnblogs.com/qwfy8910/p/19219217
点击查看代码
"""
案例:演示自定义迭代器迭代器对象&可迭代对象定义: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.mzph.cn/news/964617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python迭代器_迭代器对象可迭代对象必须分开场景

点击查看代码 """ 案例:展示了迭代器对象和可迭代对象必须分开实现的场景:- **核心需求**:多个迭代器需要同时独立遍历同一个数据集 - **问题所在**:单一类实现时,所有迭代器共享同一个状态变量,…

251113

JT-JY14T1S1Good morning, what can i do for you? I wonder report a theft. I had something stolen out of bag yesterday. I sorry to hear that. RIght, i need to take a few details. Can i start with your n…

H模型流程

主流程: 产品召开需求会议测试和开发拿到需求分析需求测试经理编写测试计划,安排测试工作测试人员分析需求,编写测试用例评审测试用例,评审通过将用例倒入到用例管理工具中搭建环境 开发提测代码包,达到了准入要求…

集合框架、io流、多线程

集合框架、io流、多线程

Ubuntu 22.04 x86_64 cron不执行原因 - whitesky

背景:美西VPS,设置cron定时任务,到了时间不执行,cron服务正常运行,脚本有执行权限, 手动执行没问题查看时区, timedatectl # 发现是UTC时区,修改为东八区时间: timedatectl set-timezone Asia/Shanghaitimeda…

为啥要搞utf-8等,直接存储Unicode码点不行吗?

Unicode本身无法直接作为实现方案,核心原因是它仅定义“字符-码点”映射,未规定二进制存储/传输规则,必须通过UTF等编码方案落地。 一、Unicode的本质局限仅定义映射关系:Unicode就像一本“全球字符字典”,只给每…

2025 年 11 月闸阀厂家推荐排行榜,美标闸阀,国标闸阀,锻钢闸阀,高压闸阀,碳钢闸阀,高温闸阀,焊接闸阀,法兰闸阀公司推荐

2025年11月闸阀厂家推荐排行榜:专业解析美标、国标、锻钢等各类闸阀企业实力 在工业流体控制领域,闸阀作为关键的控制元件,其性能和质量直接影响着整个管道系统的安全运行。随着工业技术的不断发展,各类闸阀产品在…

2025年国内商标注册机构综合实力排行榜:专业服务商深度解析

文章摘要 随着知识产权保护意识的提升,2025年国内商标注册行业迎来快速发展期,市场规模预计突破千亿元。本文基于权威数据和技术参数,深度评测当前市场上主流商标注册服务商,为企业和个人提供专业选择指南。文章包…

湛江西林瓶灌装旋盖机,选配IQ/OQ/PQ验证款

在当前制药与生物制品设备采购趋势中,越来越多企业将决策重心从单纯的初始购置成本转向全生命周期价值评估。随着GMP合规要求日益严格,IQ/OQ/PQ验证文件的完整性、设备运行稳定性以及后期维护便捷性,已成为西林瓶灌…

2025年安徽商标注册公司Top5排行榜:专业机构深度解析

摘要 随着知识产权意识的提升,2025年商标注册行业在安徽地区呈现快速增长趋势,企业对于专业商标服务的需求日益旺盛。本文基于行业数据和用户口碑,为您呈现一份权威的安徽商标注册公司排行榜单,旨在帮助创业者及企…

锦州出口欧美西林瓶灌装压塞机 FDA认证

当前,西林瓶灌装设备出口欧美市场面临显著的价格与价值错配问题。一方面,部分低价机型虽标榜“经济实惠”,却因缺乏FDA认证、无菌保障不足或自动化程度低下,导致客户在清关、合规及后续运维中承担高昂隐性成本;另…

凉山中药混悬剂西林瓶灌装机选型,防沉淀封口成本可控

在当前中药制剂产业升级背景下,凉山地区多家中成药生产企业正加速推进混悬剂类产品的自动化灌装改造。中药混悬剂因成分复杂、易沉降、黏度波动大等特点,对西林瓶灌装设备提出了更高要求——不仅需具备良好的防沉淀搅…

沈阳压死边折弯机模具价格影响因素及采购攻略

近年来,沈阳作为东北地区重要的工业制造基地,在钣金加工、机械装备及模具配套领域持续保持活跃态势。尤其在压死边折弯机模具这一细分品类中,本地企业对高精度、高稳定性产品的需求稳步上升。受原材料价格波动、运输…

贝叶斯优化之采集函数 0基础学习

写在前面:什么是贝叶斯优化 参考这里 主要包含两个部分一个代理模型(surrogate model),用于对目标函数进行建模。代理模型通常有确定的公式或者能计算梯度,又或者有已知的凹凸性、线性等特性,总之就是更容易用于…

神经网络滤波器用途

神经网络中的“滤波器”(Filter),也常被称为“卷积核”(Kernel),是卷积神经网络(CNN)的核心组件。它的主要用途是从输入数据中提取特征,这是CNN在图像识别、语音处理等领域取得巨大成功的关键原因。 核心用途…

字符编码体系详解:从ASCII到UTF-8的演进与实践

字符编码体系详解:从ASCII到UTF-8的演进与实践 一、字符编码的本质与演进动因 字符编码是计算机存储和传输文本的基础——它通过数值映射将人类可识别的字符转换为机器可处理的二进制数据。随着计算机从英语环境走向多…

自定义实现Kubernetes CSI

自定义实现Kubernetes CSI目录自定义实现Kubernetes CSI一、CSI架构设计目标与核心组件1.1 设计目标1.2 核心组件1.3 工作原理二、自定义CSI驱动实现步骤2.1 环境准备2.2 接口实现2.3 测试与验证2.4 镜像构建三、CSI驱…

按位翻转

比如mask是100(二进制)的三位数,bitLen是3。 翻转后outdata应该是001。mask = raw & mask; quint64 outdata = 0; //为了适用多位,这里定义64位 int temp = 0; for (int i = 0; i < bitLen; i++…

2025年10月鸡精生产工厂口碑排行榜TOP10:江苏天味食品科技领跑行业

摘要 随着餐饮行业标准化进程加速,2025年鸡精生产行业迎来品质升级浪潮。本文基于市场调研数据,从品控体系、研发能力、供应链协同等维度,权威发布10月鸡精生产工厂口碑排行榜,为餐饮企业及食品制造商提供选型参考…