内置的iter(), reversed()函数可以进行正反向迭代,如果需要定制正反向迭代,要怎么做呢?
事实上iter函数是调用的__iter__方法, reversed,则是调用的__reversed__方法,那么只需要
重写这两个方法即可:
这里演示反向输出浮点列表:
#!/usr/bin/env python #coding:utf-8 #@Author:Andy # iter() 使用的是__iter__方法 # reversed() 使用的是__reversed__ 方法 # 所以如果要自己实现,只需要重新写该方法即可 # 反向迭代器: class FloatRange: def __init__(self, start, end, step=1.0): self.start = start self.end = end self.step = step # 正向 def __iter__(self): t = self.start while t < self.end: yield t t += self.step # 反向 def __reversed__(self): t = self.end while t > self.start: yield t t -= self.step [print(x) for x in reversed(FloatRange(1.0, 5.0, 0.5))]