迭代器在之前做题的时候,有过了解和涉及,趁着今天这个时间来复习一下迭代器。
首先来了解什么是迭代器的作用。
迭代器是用来循环访问一系列元素,它不仅可以迭代序列,也可以迭代不是序列但表现出序列行为的对象。
迭代器的优点:
迭代器访问与for循环访问非常相似,但也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势,因为迭代器在访问时会丢失数据索引值,但当遇到无法随机访问的数据结构时,如集合时,迭代器是唯一访问元素的方式。
迭代器仅仅在访问到某个元素时才使用该元素,在这之前,元素可以不存在,所以迭代器适用于迭代一些无法预知的元素总数的巨大的集合。
迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问。
理解迭代器:
可直接作用于for循环的数据类型如list,tuple,dict等统称为可迭代对象:Iterable,使用isinstance()可以判断一个对象是否可以迭代对象,可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象直到对象访问完毕,返回一个stopIteration异常。
所有的Iterbale都可以通过iter()函数转化为Iterator。
定义迭代器
当自己定义迭代器时需要定义一个类。类里包含一个iter()函数,这个函数能够返回一个带next()方法的对象。
例如