迭代器的原理:
大多数的容器都是可以用for来循环遍历的,这种形式的访问清晰、简洁、方便。迭代器的用法在 Python 中普遍而且统一
迭代器由类来编写实现
迭代器的内部工作原理?
第一. for语句在容器对象中调用iter()函数
第二. 该函数返回一个定义了 __next__()方法的迭代器对象,它在容器中逐一访问元素
第三. 没有后续的元素时, __next__() 抛出一个 Stoplteration 异常通知 for 语句循环结束
我们自建一个迭代器看看!
class my_dl(object): """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.begin = -1 self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index -1 self.begin += 1 return self.data[self.begin] rev = my_dl('yai')
iter(rev) for char in rev: print(char)
自建迭代器,从末尾开始迭代呢?
class my_dl(object): """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index -1 return self.data[self.index] rev = my_dl('yai') iter(rev) for char in rev: print(char)