什么是python迭代器,python测试可迭代对象
要理解迭代器,首先要从字面上讲。
迭代,迭代,迭代,基于最后结果的软件开发是典型的迭代更新。
说到迭代,我们先模拟一下迭代:
现在让我们使用while循环遍历列表list1=[1,2,3,4,5]中的所有元素。
指数=0
同时索引len(列表1):
pirnt(列表1[索引])
Index=1接下来,使用for循环来:
对于范围内的索引(len(list1)):
Print(list1[index])显然,以上两种方法都可以实现遍历一个列表中的所有元素。但是,它们都依赖于列表的索引,如果我们想遍历一个没有索引的数据类型,比如字典和集合。那我该怎么办?
你可能知道可以直接用for来遍历Python中的列表、祖先、字典、集合等数据类型。像这样:
对于list1中的I:# list 1中的所有元素都可以在不依赖索引的情况下取出。
Print(i)那么上面的for循环到底是怎么用Python实现的呢?
其实和我们今天要讲的迭代器有很重要的关系。接下来,我们将一步步介绍迭代器的相关内容。
迭代对象我们之前了解过,字符串、列表、字典、祖先、集合和打开的文件句柄可以被for循环。这些物体有什么共同点?它们的共同点是都有一个叫__iter__的方法。
总而言之:
只要一个对象有__iter__方法,就可以称之为iterable对象。
字符串、列表、字典、祖先、集合和打开的文件句柄都是可迭代的对象。
简单明了一点?在Python中,所有可以被for循环的对象都是可迭代对象。
迭代器上面提到的有__iter__方法的对象,如果调用这个特殊的__iter__方法会怎么样?
补充:
dict1={a: 1, b:2, c:3}
#相当于dict。__iter__(),类似于len(dict1)等价于dict。__len__()
D=iter(dict1)执行iter(dict1)或者调用dict1会得到什么?__iter__方法?
你得到的是一个迭代器,有一个特殊的方法叫做__next__ method。总而言之:
只要一个对象有__iter__ method和__next__ method,那么这个对象就可以称为迭代器。
在一个iterable对象上调用它的__iter__方法,就得到一个iterator对象。
迭代器的特点和优点:不依赖索引的懒计算,节省内存。缺点:不如一次性按索引取值方便,只能取回来,不能取回来。
For循环本质为i in [1,2,3,4,5]:
.相当于:
I=[1,2,3,4,5]。__iter__() #获取迭代器
虽然正确:
尝试:
X=i.__iter__() #获取下一个值
除了StopIteration:
遇到StopIteration时,Break #退出循环。
内置方法简介:无限计数:
从itertools导入计数
计数器=计数(开始=13)
打印(下一个(计数器))
13
打印(下一个(计数器))
14
循环迭代:
从itertools导入周期
颜色=循环([红色,黄色,绿色])
打印(下一个(颜色))
红色
打印(下一个(颜色))
黄色
打印(下一个(颜色))
绿色的
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。