python中的 迭代器(如同遍历一般理解)

全面理解Python中的迭代器 迭代是一种重复获取数据集合中元素的过程,一次只获取一个元素,直到遍历完所有元素。在Python中,迭代通常用于遍历序列(如列表、元组)或任何可迭代对象。自定义迭代器允许我们创建自己的数据结构并以迭代方式访问其内容。在Python中,最常见的方式是通过生成器函数来实现。生成器函数是一种特殊的迭代器,使用yield语句暂停和恢复函数的执行。# 使用自定义迭代器print(num)itertools模块包含了许多有用的迭代器函数,如count()cycle()chain()等。例如,count()break。 阅读详情

迭代器:

如同遍历一般,这样理解起来可以发现不是特别的绕,刚开始的时候我觉得这个迭代特别的不好理解,概念看来好几遍,还是一头蒙。突然发现把迭代这两词换成遍历这之后,思路一下就打开了!
先一步一步的来了解吧~

1. 迭代的概念

使用 for 循环遍历取值的过程叫做迭代,比如:使用for循环遍历列表获取值的过程。

for value in [2, 3, 4]:
    print(value)
结果:
2
3
4

2. 可迭代对象

使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串

可迭代的对象说明是可以被迭代(遍历)的,但是只有迭代器可以使用!

3. iter()函数与next()函数

不好理解,先不看着里~~~

iter函数: 获取可迭代对象的迭代器,会调用可迭代对象身上的iter方法
next函数: 获取迭代器中下一个值,会调用迭代器对象身上的next方法

也就是说:这两个函数必须同时在一个类里,同时实现两个方法。

4. 自定义可 迭代 对象

 自定义可迭代对象: 在类里面定义__iter__方法创建的对象就是*可迭代(遍历)对象*
class MyList(object):

    def __init__(self,age):
        # 初始化
    self.age = age

    def __iter__(self):
        # 返回本身
      return self

      "说明:这个类是可迭代对象,实现了__iter__ 方法。
       到这里只能说明,是可以被迭代(遍历),
       如同现在就是一个列表;可以做为遍历取值的对象。"
       # 现在它只是迭代器的一部分,只实现了两个方法中的一个。

5.自定义 迭代器

自定义迭代器对象: 在类里面定义iter和next方法创建的对象就是迭代器对象。
这里同时实现两个方法,所以叫迭代器。

class MyClass(object):
    """功能:实现迭代出任意范围数字的值;
    例如:遍历出1到100的数字。
    """
    # 初始化
    def __init__(self, age):
        self.age = age
        self.num = 0

    # 作用:把这个类变成一个可迭代对象
    def __iter__(self):
        return self

    # 作用:在迭代(遍历)时,取出下一个值
    def __next__(self):
        """根据条件实现的功能主要是写在这!"""
        # 判断是否大于遍历的值
        if self.num >= self.age:

            # 停止迭代(遍历)
            raise StopIteration

        else:
            # 继续迭代(遍历)直到满足条件为止
            self.num += 1
            return self.num

#创建对象
MyClass = MyClass(100)

#使用for循环遍历,说明这个类是迭代器。
for x in MyClass:
    print(x)

结果:
1
2
3
4
….
…..
99
100

6.概念理解总结

迭代器: 就是定义一个类,在类里面实现iter和 next这两个方法;则这个类就是 迭代器;可以使用for迭代(遍历)。

(个人理解)注:
iter 的作用是把 这类变成 可迭代(遍历)的对象,返回本身。
next 就是能在迭代(遍历)的时候,依次取出下一个值。

7.迭代器的应用场景

———-迭代器:我们发现迭代器最核心的功能就是可以通过next()函数的调用来返回下一个数据值。如果每次返回的数据值不是在一个已有的数据集合中读取的,而是通过程序按照一定的规律计算生成的。
———意味着不在依赖一个已有的数据集合,也就是说不用再将所有要迭代的数据都一次性缓存下来供后续依次读取,这样可以节省大量的存储(内存)空间。

8.举个例子

举个例子,比如,数学中有个著名的斐波拉契数列(Fibonacci),数列中第一个数为0,第二个数为1,其后的每一个数都可由前两个数相加得到:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

现在我们想要通过for…in…循环来遍历迭代斐波那契数列中的前n个数。那么这个斐波那契数列我们就可以用迭代器来实现,每次迭代都通过数学计算来生成下一个数。

class Fibonacci(object):

    def __init__(self, num):
        # num:表示生成多少fibonacci数字
        self.num = num
        # 记录(斐波拉契数列)fibonacci前两个值,
        self.a = 0
        self.b = 1
        # 记录当前生成数字的索引
        self.current_index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current_index < self.num:
            result = self.a
            self.a, self.b = self.b, self.a + self.b
            self.current_index += 1
            return result
        else:
            raise StopIteration


fib = Fibonacci(5)
# value = next(fib)
# print(value)

for value in fib:
    print(value)

执行结果:

0
1
1
2
3

〖Python零基础入门篇(61)〗- Python 中的迭代器 该章节我们来学习一下 Python 中的一个新的概念,那就是 迭代器 。迭代器的使用可以帮助我们提升代码的性能,接下来让我们看一下关于迭代器,我们需要学习一下哪些内容。 阅读详情

相关推荐

Type-C连接中的CC引脚:Rp与Rd电阻的识别与供电模式选择

本文深入解析Type-C接口中CC引脚的核心功能,包括Rp与Rd电阻的识别原理及供电模式选择机制。通过详细的分压计算和实战案例,揭示Type-C设备如何通过CC引脚实现方向检测、角色识别和供电协商,为硬件设计提供关键指导。

weixin_30616969的博客 343

python迭代和遍历的区别_迭代和遍历的定义和区别

什么是迭代?迭代就是重复运行一段代码语句块的能力。分为两种方式使用递归函数使用循环(for 或 while 循环)假设有个需求,要按照降序打印10以下(包括10),0 以上的整数,用递归和循环都可以实现,但都要重复运行一段代码语句,就是迭代。递归函数实现先看使用递归函数如何实现def countdown(n):if n>0:print(n)countdown(n-1)else:print('...

weixin_39943547的博客 462

深入了解torch框架

大国的游戏,政府支持到位,是未来;AI : Artificial Intelligence,旨在研究、开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统,是一种拥有自主学习和推理能力的技术。它模仿人类大脑某些功能,包括感知、学习、理解、决策和问题解决。AI本质​ NLP(说话,听)、CV(眼睛)、自动驾驶、机器人(肢体动作)、大模型三要素:数据、网络、算力① 神经网络:找到合适的数学公式;② 训练:用已有数据训练网络,目标是求最优解;③ 推理:用模型预测新样本;PyTorch,简称Torch

qq_74732076的博客 1136

自学python系列6:python迭代,有关文件的输入输出

首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的 有哪些方式是可迭代的: 1.文件操作 我们读取文件的时候,会用到一个readline()方法,其实它就是一个迭代器,它会返回当前的数据,然后自动的调用内置的next()方法来让文件的读取头自动的移动到当前的下面一行,准备下次的读取,到达文件末尾时,就会返回空字符串. 01 &gt...

weixin_30433075的博客 166

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 335

【GESP】C++四级考试大纲知识点梳理, (10) 文件读写和重定向

其实,由于本人也是边学、边实验、边总结,且对考纲深度和广度的把握属于个人理解。因此本文更多的不是一个教程,而是个人知识梳理,如有遗漏、疏忽,欢迎指正、交流。孩子放假,出游一周,没有更新。刚刚归来,继续学习。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。(10)掌握文件操作中的重定向,实现文件读写操作,了解文本文件的分类,掌握写操作、读操作、读写操作。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。孩子放假,出游一周,没有更新。

CoderCoding的博客 526

python中for循环的用法-python中的for循环语句怎么写

python中的for循环语句怎么写?Python for 循环语句Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环的语法格式如下:12for iterating_var in sequence:statements(s)实例1234567891011#!/usr/bin/python# -*- coding: UTF-8 -*-for letter in 'P...

weixin_37988176的博客 7437

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 414

遍历和迭代的区别

简单的说: 遍历:就是走一遍 迭代:走n遍,反反复复 专业的说: 迭代就是重复运行一段代码语句块,分为两种方式 1.使用递归函数 2.使用循环(for 或 while 循环)

m0_37537624的博客 4029

【Frida Android】实战篇8:客户端证书认证绕过 Hook 教程

通过重写类的方法,自定义证书校验逻辑;利用配置文件,从系统层面管理证书信任策略;以及通过 OkHttp 框架提供的方法,实现证书的强绑定校验。这些内容主要围绕客户端如何验证服务端证书的合法性展开。客户端证书认证。当 APK 预置了客户端证书,并且服务端会对客户端证书进行校验时,传统的中间人攻击方式将面临新的挑战。我们将深入分析这种场景的工作原理,并详细介绍如何通过技术手段获取客户端证书、配置中间人工具,最终成功实现抓包分析。

水滴石穿 1429

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

weixin_72194028的博客 3010

java中循环、遍历、迭代和递归的区别

java中循环、遍历、迭代和递归的区别 1.循环(loop)   循环是指当条件满足的情况时,重复的去执行一段代码。比如while语句。循环可以对应集合,列表,数组也可以对执行代码进行操作。循环算是一种最基础的概念,凡是重复的执行一段代码,都可以称之为循环,大部分递归,遍历迭代都是循环。 2.遍历(traversal)   遍历是按照一定规则访问一个非线性结构的每一项,强调非线性结构(树、图)。以树型结构来说,就是访问树型结构的没一个节点,而且每个节点只能访问一次,不能对执行代码进行遍历。所以遍历只能对应集

qqw666666的博客 4607

[DDR5]DDR5 SDRAM 状态图 和 基本功能

DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。

串起点滴 1202

python中的迭代器

本文介绍作者对于Python的迭代器的了解,欢迎各位的观看!

qq_61298704的博客 4942

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

什么是python的迭代器,迭代器有什么好处

【前言】 在初级研发或测试面试中总会被问到什么是python的迭代器,有什么好处?这个看似很简单的话题说起来似乎感觉自己并不是特别清楚的能讲出来。所以本文记录下自己查阅很多资料后的总结。 【什么是迭代器】 迭代器是python最强大的功能之一,是访问集合元素的一种方式 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stoplteration异常,以终止迭代(只能往后走,不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一

Be_Nice的博客 9516

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【python进阶】全面理解Python中的「迭代器」

迭代是一种重复获取数据集合中元素的过程,一次只获取一个元素,直到遍历完所有元素。在Python中,迭代通常用于遍历序列(如列表、元组)或任何可迭代对象。自定义迭代器允许我们创建自己的数据结构并以迭代方式访问其内容。在Python中,最常见的方式是通过生成器函数来实现。生成器函数是一种特殊的迭代器,使用yield语句暂停和恢复函数的执行。# 使用自定义迭代器print(num)

weixin_44800376的博客 1713

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深入理解Python迭代器和可迭代对象

1 迭代器 迭代是指对集合元素遍历的一种方式,迭代器是可以实现对集合从前向后依次遍历的一个对象 2 可迭代对象 定义(表面理解) 表面来看,只要可以用 for...in...进行遍历的对象就是可迭代对象 自定义可迭代对象(本质) 语法层面,如果一个对象实现了__iter__方法,那么这个对象就是可迭代对象 判断是否是可迭代对象(Iterable) 通过调......

以梦为码 随路可栖 5803

python 遍历列表中的每个元素 for循环 while循环 迭代器

''' 1)while循环遍历,得到列表中每一个元素 ''' list1=[1,2,5,6,9] i=0 #i是下标 while i&lt;len(list1): print(list1[i]) i+=1 ''' 2)for循环遍历,最常用的遍历列表的方式 ''' list2=[10,25,36,66] for i in list2: print(i) ''' 3)...

qq_42467563的博客 2万+

python dict遍历_Python中的迭代器与生成器

回顾 在Python进阶记录之基础篇(十)中,我们介绍了Python中字典dict的相关知识点,介绍了字典的基本概念和各种操作方法。字典与列表、元组、集合都是Python中常用的数据结构,需要重点掌握它们之间的关联与区别,熟练使用各个数据结构。今天我们来讲一下Python中的迭代器与生成器。迭代器 在之前介绍的列表、元组等内容中,我们都通过for-in循环遍历了其中的元素,这种遍历我们称之为迭代,...

weixin_39740283的博客 1661

python之迭代器与遍历

# coding=utf-8 list1 = [1, 2, 3, 4, 5] for value in list1: print(value) for循环遍历 迭代器有两个方法:iter()和next();iter()返回一个迭代器对象,next()游标往下移一个单位。 个人理解python迭代器:迭代器对象就像一个带有刻度的水杯,每次往外倒出一定量...

938

python 一行遍历_Python中的迭代器与生成器

回顾 在Python进阶记录之基础篇(十)中,我们介绍了Python中字典dict的相关知识点,介绍了字典的基本概念和各种操作方法。字典与列表、元组、集合都是Python中常用的数据结构,需要重点掌握它们之间的关联与区别,熟练使用各个数据结构。今天我们来讲一下Python中的迭代器与生成器。迭代器 在之前介绍的列表、元组等内容中,我们都通过for-in循环遍历了其中的元素,这种遍历我们称之为迭代,...

weixin_36487018的博客 673

Python中的迭代器:深入理解与实用指南

创建自己的迭代器:这需要定义一个类并实现__iter__()和__next__()方法。可以让对象支持迭代,提供更多的灵活性和功能。

lph159的博客 1312

完全理解 python 中的容器、迭代器、生成器

完全理解 python 中的容器、迭代器、生成器 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象)在Python中,常见的容器对象有:list(列表),set(集合),di...

FreeSpider 2696

Python中迭代器和生成器理解

容器是一种把多个元素组织在一起的数据结构。容器是包含其他对象的对象,本质是也类。具体的容器就是类的实例化。Python容器类在系统中提供了不同的方法来操作它们所包含的数据,比如添加、删除,查询等。它们都继承自Python的基类,实现了特定的协议(如迭代协议),从而可以进行遍历、索引等操作。迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。1) 非迭代例子loop = 0")

raowangcheng的专栏 2127

对迭代器的理解

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

u011692780的博客 1万+
上一篇: python3中的正则表达式
下一篇: scrapy中的meta参数的使用
初五先生
博客等级 码龄8年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值