示例:
class Iterator: """ 迭代器类 """ def __init__(self, value): self.value = value self.index = -1 # 下标 def __next__(self): self.index += 1 # 下标加1,从0开始 if self.index >= len(self.value): raise StopIteration # 停止迭代 return self.value[self.index] class Iterable: """ 可迭代对象类 """ def __init__(self, value): self.value = value def __iter__(self): return Iterator(self.value) # 返回一个迭代器对象 # 测试示例 test01 = Iterable([1, 2, 3, 4, 5]) for item in test01: print(item) # 下面的代码运行效果同上面2行 test02 = test01.__iter__() while True: try: print(test02.__next__()) except: break
迭代:
每一次对过程的重复称之为”迭代一次”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。
可迭代对象(iterable)
定义:具有__iter__函数的对象,可以返回迭代器对象。
迭代器(iterator)
定义:具有__next__函数的对象,可以获取下一个元素。
用法:
1.重写__next__()
def __next__(): 语句... if 没有元素: raise StopIteration() # 停止迭代 return 数据中的元素 #聚合对象的元素
2. 重写__iter__()
def __iter__(self): return 迭代器对象
3.使用
for item in 可迭代对象:
语句...
4.原理(执行结果同3)
变量01 = 可迭代对象. __iter__() while True: try: 元素 = 变量01.__next__() except: break