使用__iter__ , 和__reversed__ 實現正、反向叠代器
阿新 • • 發佈:2017-06-11
兩個 ever init 需要 clas highlight nbsp utf 實現
內置的iter(), reversed()函數可以進行正反向叠代,如果需要定制正反向叠代,要怎麽做呢?
事實上iter函數是調用的__iter__方法, reversed,則是調用的__reversed__方法,那麽只需要
重寫這兩個方法即可:
這裏演示反向輸出浮點列表:
#!/usr/bin/env python #coding:utf-8 [email protected]: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))]
使用__iter__ , 和__reversed__ 實現正、反向叠代器