問題11:如何進行反向叠代 & 如何實現反向叠代
阿新 • • 發佈:2018-04-09
sel www. 方法 實現 init vol href pre 如何
# 有關列表問題,參考:Python:列表list
案例:
需求:實現一個連續浮點數發生器FloatRange(和range類似),根據給定範圍(start,end)和步進值(step),產生一系列連續的浮點數;
如叠代FlartRange(3.0, 4.0, 0.2)可產生序列:
正向:3.0 -> 3.2 -> 3.4 -> 3.6 -> 3.8 -> 4.0
反向:4.0 -> 3.8 -> 3.6 -> 3.4 -> 3.2 -> 3.0
class FloatRange: def __init__(self, start, end, step = 0.1): self.start= start self.end = end self.step = step def __reversed__(self): t = self.end while t >= self.start: yield t t -= self.step def __iter__(self): t = self.start while t <= self.end: yield t t+= self.step # 此循環,實例化時自動調用__iter__()方法,而不是__reversed__()方法; for x in FloatRange(1.0, 3.0, 0.5): print(x) # 此循環,只有定義了__reversed__()方法後,才能直接使用reversed; for x in reversed(FloatRange(1.0, 4.0, 0.5)): print(x)
問題11:如何進行反向叠代 & 如何實現反向叠代