【Python面向对象】(10) 迭代器
一、介绍
1. 迭代意味着多次重复,如同循环(list,tuple)
2. 实现了__iter__的对象是可迭代的,而实现了方法__next__的对象是迭代器
3. 调用__next__(或next()),迭代器返回下一个值
4. 如果迭代器没有可供返回的值,触发StopIteration异常
二、迭代器创建序列
通过对可迭代对象调用内置函数iter,可获得一个迭代器
lst = [1, 2, 3, 4, 5]
lst2 = iter(lst)
lst2.__next__
next(lst2)
三、举例
""" 迭代器 """ class PowNumber(object): """ 输出1-10的平方 """ value = 0 def __iter__(self): return self def __next__(self): # 每迭代一次value值加1 self.value += 1 # 当value值达到10后停止迭代 if self.value > 10: raise StopIteration # 返回每一个迭代值的平方 return self.value * self.value if __name__ == "__main__": pow = PowNumber() # 1. 第一种方法:__next__ print(pow.__next__()) # 输出:1 print(pow.__next__()) # 输出:4 print(pow.__next__()) # 输出:9 # 2. 第二种方法:next() print(next(pow)) # 输出:16 print(next(pow)) # 输出:25 print(next(pow)) # 输出:36 # 3. 第三种方法:循环迭代 for i in pow: print(i) # 输出: # 49 # 64 # 81 # 100