首页 > 编程语言 >python迭代器理解

python迭代器理解

时间:2023-12-18 09:58:49浏览次数:32  
标签:__ 迭代 python iter next 对象 理解 循环

目录

什么是迭代器?

在学习for循环的时候,听到了一个词叫可迭代对象。那什么是可迭代对象?

了解后又知道了迭代,可迭代,迭代器这些名词,那这些到底是什么意思呢?

我们先知道为什么for循环不像whlie循环一样,使用初始条件进行累加知道最后的结束条件进行循环,而是搞一个可迭代对象,

而且for循环为什么没有累加条件和结束条件,直接in序列就可以很循环我们想要的数据,而且是值不是索引?

迭代:如图我们把红色当做一个个贴片 我们取贴片的只能取第一个后才能去第二个,以此反复的过程叫迭代,

注意点:一次拿一个,只有上次取了才能取第二个,且每一次重复都在上一次的基础做的,所以每次重复都是有关联性。

可迭代:就是我们的数据可以迭代,不能进行迭代的怎么使用,对吧。

可迭代对象:就是一个可以迭代的对象,例如列表,字典等

迭代器:就是让我们可以迭代的工具

为什么要有迭代?

理解:想列表我们还可以使用whlie循环进行索引进行循环,但是像字典,集合这样的没有索引我们进行遍历呢,这个时候迭代器就出现,迭代器可以做到不使用索引的方式,来遍历没有的且是序列类型的数据,当然还有一个原因,假设我们在进行定义初始化变量的时候,定义成a = 1 ,但是我们需要从0开始,这个时候程序是不会出现问题,但是如果从1开始我们的数据肯定是有问题的,在我们写了很多代码的时候,再来找这个问题,就十分的难找了。

迭代器的优缺点

优点
1、为序列和非序列类型提供了一种统一的迭代取值方式。

2、惰性计算:迭代器对象表示的是一个数据流,可以只在需要时才去调用next来计算出一个值,就迭代器本身来说,同一时刻在内存中只有一个值,因而可以存放无限大的数据流,而对于其他容器类型,如列表,需要把所有的元素都存放于内存中,受内存大小的限制,可以存放的值的个数是有限的。

缺点
1、除非取尽,否则无法获取迭代器的长度

2、只能取下一个值,不能回到开始,更像是‘一次性的’,迭代器产生后的唯一目标就是重复执行next方法直到值取尽,否则就会停留在某个位置,等待下一次调用next;若是要再次迭代同个对象,你只能重新调用iter方法去创建一个新的迭代器对象,如果有两个或者多个循环使用同一个迭代器,必然只会有一个循环能取到值。

什么是可迭代对象?

在上面简单的说可迭代对象,这里详细的说说python内部的是怎么确认是可迭代对象的,在对象编写了一个叫__ iter __()的魔法方法,这就是一个可迭代对象。 这个方法主要是把这个对象转化成一个迭代器对象

iterator:迭代器

什么是迭代器对象呢?

内置有__iter__()和__next__()方法的对象,就是一个迭代器对象。

打开的文件本身就是一个迭代器对象,执行迭代器对象.iter()方法得到的仍然是迭代器本身,而执行迭代器.next()方法就会计算出迭代器中的下一个值。

迭代器是Python提供的一种统一的、不依赖于索引的迭代取值方式,只要存在多个“值”,无论序列类型还是非序列类型都可以按照迭代器的方式取值。

注意点:上面我们使用iter方法把一个可迭代对象转化成一个迭代器对象,而在迭代器对象中有一个next方法,可以取值,每次调用都可以从可迭代对象取一个值,当我们把可迭代对象中的值去完了在调用next()会发生什么,异常

标签:__,迭代,python,iter,next,对象,理解,循环
From: https://www.cnblogs.com/mozifei/p/17910357.html

相关文章

  • Machine Learning in Python
    MetricFormulaInterpretationAccuracy$\frac{TP+TN}{TP+TN+FP+FN}$OverallperformanceofmodelPrecision$\frac{TP}{TP+FN}$HowaccuratethepositivepredictionsareRecallSensitivity$\frac{TP}{TP+FP}$Coverageofactualpositivesampl......
  • python网站创建011:函数、序列化
    经典函数:JS经典函数定义function函数名(a1,a2){vara3=a1+a2returna3}varres=函数名(11,22)console.log(res) 那如何在浏览器中查看打印结果呢?  匿名函数:没名字的函数,如果只有一个地方用到,则直接使用......
  • 系统聚类思想及其Python实现
    系统聚类是一种将对象或数据按照其相似性进行分组的方法。与传统聚类方法不同,系统聚类通过构建一颗层次树(或称为树状图或谱系图)来展现数据的层次结构。在系统聚类中,数据点最初被视为单独的簇,然后通过逐步合并或分裂,形成一个层次结构的聚类结果。这种层次结构可用于分析数据的不同......
  • 对ThreadLocal的理解
    1.ThreadLocal概述ThreadLocal是多线程中对于解决线程安全的一个操作类,它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal同时实现了线程内的资源共享案例:使用JDBC操作数据库时,会将每一个线程的Connection放入各自的ThreadLocal中,从而保证每......
  • Python——作图
    Python——作图百分比堆积柱状图importmatplotlib.pyplotaspltimportnumpyasnp#定义数据categories=['CatA','CatB','CatC']values1=[20,30,15]values2=[10,25,20]values3=[5,10,15]#将数据转化为相对百分比total=np.array(v......
  • 理解K8S的CRD
    CRD本身是Kubernetes内置的资源类型,全称是CustomResourceDefinition,可以通过命令查看,kubectlget查看集群内定义的CRD资源。NAMECREATEDATapps.app.o0w0o.cn2019-07-25T07:02:47Zmicroservices.app.o0w0o.cn2019-07-25T07:02:47Z在与人......
  • Python: Random
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:#描述:https://docs.python.org/3/library/string.html#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#Datetime:2023/12/1718:16#User:geovindu#P......
  • python常用内置模块(持续更新中)
    random模块相关方法需要掌握的,未提及的建议自行了解importrandom大于0且小于1之间的小数(不含1)random.random()#0.38916016381720087指定区间指定start到end(不含end)之间的随机小数random.uniform(0,10)#8.080921224222864指定区间指定start到end(含end)之......
  • Python模块与包
    【一】模块的介绍【1】什么是模块在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能。如果把开发程序比喻成制造一台电脑编写模块就像是在制造电脑的零部件准备好零部件后,剩下的工作就是按照逻辑把它们组装到一起。将......
  • Python迭代器和生成器
    【一】迭代器介绍迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代whileTrue:msg=input(">>:").strip()......