P叔带你学Python-14-迭代器

真的不建议学Python,煞笔才学习Python,学Python难?两个小时足够搞定 对于Python这么语言,可以当作一门兴趣或爱好来学习,但是若是想找到份好的工作还是谨慎为主,这也是为什么不建议你搞Python的原因。 如果说,有些读者的学历非常牛逼,然后学习能力也非常强,那么选择人工智能、机器学习、数据分析,我觉得前途是光明的,既能赚钱,待遇又好,还不可替代,不学 Python 绝对亏。 如果说,有些读者学历一般,做程序员仅仅是为了糊口饭吃,那么我觉得可以把 Python 作为第二语言来学,不要当做主语言。搞点范围许可内的爬虫,自动化测试,我就觉得挺好的。况且 Python 这门语言本 阅读详情

迭代器是 Python 中非常重要的概念之一,它是一种对象,可以在代码中按顺序访问一组值。Python 中的大多数数据类型,如列表、元组、集合和字典都是可迭代的对象,这意味着它们可以使用 for 循环进行迭代。但是,在某些情况下,我们需要更精细的控制迭代过程,这就是迭代器的作用。

在这里插入图片描述

迭代器的定义和用法

在 Python 中,迭代器是一种实现了 _iter_() 和 _next_() 方法的对象。_iter_() 方法返回迭代器对象本身,而 _next_() 方法返回迭代器中的下一个值。如果没有更多的值可供迭代,它会引发 StopIteration 异常,这标志着迭代的结束。

以下是一个简单的示例,演示了如何使用迭代器遍历一个列表:

numbers = [1, 2, 3, 4, 5]   iter_obj = iter(numbers)      while True:       try:           item = next(iter_obj)           print(item)       except StopIteration:           break   

在上面的示例中,我们首先创建了一个名为 numbers 的列表,然后使用 iter() 函数创建了一个迭代器对象 iter_obj。接下来,我们使用 while 循环和 try-except 块来遍历迭代器。每次迭代,我们使用 next() 函数从迭代器中获取下一个值,并将其存储在变量 item 中。如果没有更多的值可供迭代,StopIteration 异常会被引发,我们会退出循环。

创建自己的迭代器

Python 中的迭代器是可自定义的,我们可以通过实现 _iter_() 和 _next_() 方法来创建自己的迭代器。以下是一个示例,演示了如何使用迭代器对象遍历一个自定义列表:

class MyList:       def \__init\__(self, data):           self.data = data           self.index = 0          def \__iter\__(self):           return self          def \__next\__(self):           if self.index < len(self.data):               item = self.data[self.index]               self.index += 1               return item           else:               raise StopIteration      my_list = MyList([1, 2, 3, 4, 5])      for item in my_list:       print(item)   

在上面的示例中,我们定义了一个名为 MyList 的自定义列表类,它包含一个名为 data 的属性和一个名为 index 的计数器。在 _iter_() 方法中,我们返回自身,表示迭代器对象本身就是迭代器。在 _next_() 方法中,我们检查计数器是否小于列表的长度,如果是,我们返回列表中的下一个元素并将计数器加 1。否则,我们引发 StopIteration 异常来表示迭代的结束。

接下来,我们创建一个名为 my_list 的 MyList 实例,并使用 for 循环来迭代它。在每次迭代中,我们使用 next() 方法从迭代器中获取下一个元素,并将其打印到控制台上。

迭代器 vs. 可迭代对象

在 Python 中,不同的数据类型具有不同的迭代行为。一些数据类型是可迭代的对象,而另一些则是迭代器对象。可迭代对象是指具有 _iter_() 方法的对象,而迭代器对象是指具有 _iter_() 和 _next_() 方法的对象。

可以使用 Python 内置函数 iter() 将可迭代对象转换为迭代器对象。例如,我们可以使用以下代码将一个列表转换为迭代器对象:

numbers = [1, 2, 3, 4, 5]   iter_obj = iter(numbers)   

注意,numbers 列表是可迭代对象,而 iter_obj 是迭代器对象。在使用 iter() 函数将可迭代对象转换为迭代器对象时,Python 会在后台自动调用 _iter_() 方法,以创建迭代器对象。

总结

在 Python 中,迭代器是一种对象,可以访问一组值,并按顺序返回它们。迭代器通过实现 _iter_() 和 _next_() 方法来工作。可迭代对象是具有 _iter_() 方法的对象,而迭代器对象是具有 _iter_() 和 _next_() 方法的对象。在 Python 中,大多数数据类型都是可迭代对象,但我们可以通过实现自己的迭代器来自定义迭代行为。

—END—

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。img

img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img
五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述
在这里插入图片描述

简历模板在这里插入图片描述​
深入解析FOC电流环PI参数整定:从理论到实践 本文深入解析了FOC(磁场定向控制)中电流环PI参数整定的核心原理与实践方法。文章从永磁同步电机模型出发,详细阐述了基于带宽与零极点对消的工程法及考虑逆变器延迟的二阶系统整定法两种经典策略,并提供了从理论计算到安全上电调试的完整步骤与常见问题解决方案,帮助工程师精准调校电机控制性能。 阅读详情

相关推荐

最小二乘法(看完即会)

其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。

qlkaicx的博客 2万+

p14_可迭代对象 & 迭代器 & 生成器

num1 = 123""" str, list, tuple, dict, set, range对象都支持迭代协议,所以他们都是可迭代对象而 number 对象既不支持迭代协议,也不支持序列协议,因此它不是可迭代对象 """definit(self):passprint(isinstance(mo1, Iterable)) # False: 既不支持迭代协议, 也不支持序列协议definit(self):passdefiter(self):pass。

2302_79329330的博客 926

墨刀原型设计工具操作使用指南及实践操作

该指南通过异常场景处理、像素级参数说明、复杂交互示例,覆盖了墨刀操作的全细节,适合从新手到资深用户的进阶学习。结合 PlantUML 思维导图的层级化展示,可快速定位具体功能的操作要点与问题解决方法,真正实现 “照指南即可操作” 的实用价值。

hy行者勇哥的博客 4956

python迭代器Itertools

https://docs.python.org/3.6/library/itertools.html 一无限迭代器: IteratorArgumentsResultsExample count() start, [step] start, start+step, start+2*step, ... count(10)-->1...

weixin_30596165的博客 130

CH340以及CH系列USB转串口驱动下载

在之前使用USB转串口时,很多时候大家可能会不知道去哪下载驱动,然后百度随便下载一个,但往往鱼龙混杂且版本不一,所以今天特意整理一下CH340驱动以及CH系列的官方驱动下载地址,方便大家进行下载也方便自己后期查找,所有链接皆指向官方下载链接,每次下载都可获取官方当前最新驱动。 CH340/CH341 Windows驱动下载链接:CH341SER.EXE下载链接 Linux驱动下载链接:CH341SER_LINUX.ZIP下载链接 Andr...

OIDCAT的博客 4万+

世界模型和大语言模型结合开发自动驾驶算法

摘要:自动驾驶系统开发中,融合世界模型和大语言模型可显著提升效率和安全性。世界模型负责环境感知与预测(如目标检测、轨迹预测),而大语言模型优化代码生成、决策解释等环节。实施路径包括需求分析(1-2周)、模型开发(2-4个月)、模拟测试(1-2个月)、实车测试(2-3个月)和合规优化(1-2个月),总周期6-12个月。关键技术工具包括PyTorch/TensorFlow、CARLA模拟器和ROS系统,核心设计理念强调模块化、安全优先和敏捷迭代。示例代码展示了YOLO目标检测与大语言模型决策建议的集成方案。该方

ponygame的博客 827

编程Agent横评:Cursor、Copilot、Cline谁更能自主干活?

AI编程助手正从简单的代码补全工具,进化为具备自主规划与执行能力的智能体。其核心原理是基于大语言模型理解项目上下文,自动完成代码生成、命令执行、测试运行与错误修复等闭环操作。这类编程Agent的技术价值在于将开发者从繁琐的重复性编码中解放出来,显著提升工程效率,尤其适用于新模块搭建、接口开发、自动化测试等场景。在实际落地时,如何评估不同工具的项目理解能力、执行完整度和人工干预程度,成为技术选型的关键。本文通过统一测试环境与验收标准,对Cursor、GitHub Copilot Agent、Cline三款代表

weixin_30326741的博客 366

MFC使用Websocket通讯介绍和实例(附完整源码)

踩坑点,下载了好几个boost版本编译,经常出问题,后来搜索了好久资料才发现如下评论:WebSocket++0.8.2 has been tested through Boost 1.72。WebSocketpp依赖于boost,因此在使用WebSocketpp前需要编译Boost;所以我们直接下载Boost 1.72的windows版的进行安装,安装完成还需要编译;WebSocketpp也叫WebSocket++;服务编译好之后,使用。

weixin_42530684的博客 1171

python3序列和迭代器_python3-itertools模块和迭代器函数

补充:zip迭代器和zip_longest迭代器python3中的zip是可迭代的对象,可以节省内存空间zip(*iterables) #构造函数zip拼接多个可迭代对象iter1,iter2...的元素,返回新的可迭代对象,其元素为各系列iter1,iter2...对象元素组成的元组。如果各系列iter1,iter2..长度不一致,则截断至最小系列长度。>>>zip>&g...

weixin_39855658的博客 197

EtherCAT主站开发(学习笔记一)

摘要:本文介绍了基于STM32H7的EtherCAT主站开发探索。EtherCAT是一种高实时性工业以太网协议,具有低延迟、高带宽利用率等特点。文章详细解析了EtherCAT的协议架构、帧结构和工作原理,重点阐述了PDO数据传输过程及主从站通信机制。同时介绍了CoE、FoE等应用层协议扩展。作者将基于SOEM开源协议栈进行开发,为后续实际应用中的伺服电机控制奠定基础。

weixin_69388007的博客 1475

YOLOv11模型改进-模块-引入特征细化模块FRFN 解决小目标、遮挡等问题

FRFN 是一种专门设计的深度学习结构,旨在提高图像处理任务中的特征表示能力。它的核心设计理念是通过逐层细化和优化特征图,从而实现更高的分类和检测精度。1. 特征提取层:通过卷积层提取初始特征,并进行批量归一化以增强稳定性。2. 特征细化模块:在每个模块中,当前层特征图与前一层特征图进行融合,以强化特征表示。3. 跳跃连接:通过跳跃连接保留多尺度信息,帮助缓解深层网络中的信息丢失。4. 非线性激活:使用激活函数(如ReLU)增加模型的非线性能力。5. 输出层。

qq_64693987的博客 3337

迭代器python菜鸟_Python菜鸟之路:Python基础-生成器和迭代器、递归

#encoding: utf-8#module itertools#from (built-in)#by generator 1.138"""Functional tools for creating and using iterators.Infinite iterators: #无限迭代count(start=0, step=1) --> start, start+step, start...

weixin_39963287的博客 256

LangGraph-StateGraph 和 Graph API 源码分析

摘要: StateGraph是LangGraph的核心API,用于构建有状态工作流图。本文分析了其实现原理,包括: 核心类关系:StateGraph(构建器)和CompiledStateGraph(继承自Pregel的可执行图) 关键流程:状态模式到通道的映射、节点到PregelNode的转换 实现特点: 支持TypedDict和Pydantic两种状态模式 自动选择通道类型(LastValue或BinaryOperatorAggregate) 通过映射函数处理节点输入输出 边实现基于通道写入机制 编译过程

838

python迭代器_20.python迭代器

可迭代对象Iterable和迭代器对象Iterator:可迭代对象:满足前提:可以被循环操作的对象,就是可迭代对象举例:str、list、tuple、set、dict、range、generator...如何高效的检测一个对象是否是可迭代对象?可以使用collections模块中的Iterable类型配合isinstance(obj,type)内置函数来判断即可操作步骤如下:步骤一:导入colle...

weixin_39914868的博客 174

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python 迭代器完全指南:数据流控的底层艺术

本文深入剖析Python迭代器的底层原理与应用艺术。教程从迭代器协议(`__iter__`与`__next__`)的核心机制出发,通过文件处理、大数据流、惰性计算等8大实战场景,揭示迭代器如何**减少80%内存占用**并提升数据处理性能。涵盖自定义迭代器设计、迭代工具链优化、协程整合等高级技术,包含15+代码示例和内存效率对比测试。

YAnt的博客 1390

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python中的itertools_python迭代器Itertools

一无限迭代器:IteratorArgumentsResultsExamplecount()start, [step]start, start+step, start+2*step, ...count(10)-->1011121314...cycle()pp0, p1, ... plast, p0, p1, ...cycle('ABCD')-->ABCDAB...

weixin_39958911的博客 107

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python面试题之Python迭代器

要理解迭代器,首先要从字面意思来说。 迭代 重复 下一次重复基于上一次的结果 软件开发就是典型的迭代更新。 讲迭代,我们就先来模拟一下迭代: 现在让我们使用while循环来遍历出一个列表list1 = [1, 2, 3, 4, 5]里面的所有元素。 index = 0 while index < len(list1): pirnt(l...

dengxiangbao3167的博客 211

Python 进阶学习笔记之四:高效迭代器工具

Python 内置数学模块 Math 和 快捷迭代器工具模块 itertools

zombres的博客 479

python3 之 迭代器与生成器

迭代器   迭代是Python最强大的功能之一,是访问集合元素的一种方式。   迭代器是一个可以记住遍历的位置的对象。   迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。   迭代器只能往前不会后退。   迭代器有两个基本的方法:iter() 和 next()。 字符串、列表或元祖对象都可用于创建迭代器: 1 list = [1,2,3,4] ...

diwumeng1546的博客 160

python生成器和迭代器

一、 python生成器 生成器:python中将一边循环一边计算的这种机制称为生成器。简单的说就是为了节约内存空间,产生了一种计算规则,在取下一个数的时候按照计算规则取出即可。生成器必定是一个迭代器。 (1) 生成器基本操作 # 创建生成器的方式一: “”“把列表生成式的[]改为()即可 ”“” # 列表生成式: a = [x * 2 for x in range(10)] # 生成器: ...

阿鹏的摇滚小站 275

Python-itertools - 高效的迭代器的函数

itertools模块实现一系列iterator,这些迭代器受到APL,Haskell和SML的启发。为了适用于Python,它们都被重新写过。 无穷迭代器: 迭代器 实参 结果 示例 count() start, [step] start, start+step, start+2*step, ... count(10)-->10...

Rnan_prince的博客 776

python学习手册笔记——14.迭代器和解析

00.for循环可以用于Python钟任何序列类型,包括列表、元组以及字符串 01.本章交替地使用“可迭代的”和“迭代器”来表示通常支持迭代的一个对象。“可迭代的”指的是支持iter的一个对象,而“迭代器”指的是iter所返回的一个支持next(I)的对象。 02.upper()大写字母 03.当for循环开始时,会通过它传给iter内置函数,以便从可迭代对象钟获得一个迭代器,返回的对象含有...

weixin_30856725的博客 70

Python基础(迭代器)

一、迭代器   概述:          迭代是Python最强大的功能之一,是访问集合元素的一种方式。     迭代器是一个可以记住遍历的位置的对象。     迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。     迭代器有两个基本的方法:iter() 和 next()。     字符串,列表或元组对象都可用于创建迭代器:   延迟计算或...

weixin_30689307的博客 146

人工智能day8——迭代器、生成器以及python的模块化

模块化就好比把一个大的玩具套装(整个 Python 项目)按照功能或者类型分成一个个小的积木块(模块),每个小积木块都有自己独立的功能,而且可以单独拿出来使用或者和其他积木块组合使用。在 Python 里,一个.py文件通常就是一个模块,比如有一个文件,里面定义了各种数学运算相关的函数,那这个文件就是一个模块,它可以被其他 Python 代码引入并使用其中的功能。

a150463的博客 1086

Python:迭代器的简单理解

一、什么是迭代器 迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样)。迭代器是实现了__next__()方法的对象(这个方法在调用时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。 [注意]:迭代器只能前进不能后退 [迭代器的优点]: 使用迭代器不要求事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计...

weixin_30764883的博客 1195

python3-itertools模块和迭代器函数

补充:zip迭代器和zip_longest迭代器 python3中的zip是可迭代的对象,可以节省内存空间 zip(*iterables) #构造函数 zip拼接多个可迭代对象iter1,iter2...的元素,返回新的可迭代对象,其元素为各系列iter1,iter2...对象元素组成的元组。如果各系列iter1,iter2..长度不一致,则截断至最小系列长度。 >&g...

300
上一篇: P叔带你学Python-13-继承
下一篇: P叔带你学Python-15-作用域
Python_P叔
博客等级 码龄3年 5454粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值