一、定义
-
含义
迭代的意思类似于循环,每一次重复的过程被称为一次迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭代的初始值
提供迭代方法的容器称为迭代器,常用的迭代器:列表、元组、字符串、字典。 -
示例 1(字符串)
字符串就是一个容器,同时也是一个迭代器,for 语句的作用就是触发这个迭代器的迭代功能,每次从容器里依次拿出一个数据,这就是迭代操作 -
示例 2(字典)
二、关于迭代器的两个BIF和两个魔法方法
-
两个BIF:
iter()和next()
对一个容器调用 iter() 就得到它的迭代器,调用 next() 迭代器就会返回下一个值,如果迭代器没有值可以返回,就会抛出一个StopIteration的异常
-
两个魔法方法:
__iter__()
和__next__()
如果一个容器是迭代器,那就必须实现__iter__()
魔法方法,这个方法实际上就是返回迭代器本身
class Fibs:
def __init__(self,n=20):
self.a = 0
self.b = 1
self.n = n
def __iter__(self):
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b
# 添加参数n,添加参数控制迭代的范围
if self.a > self.n:
raise StopIteration
return self.a
fibs = Fibs()
for each in fibs:
print(each)