1. 程式人生 > >問題11:如何進行反向叠代 & 如何實現反向叠代

問題11:如何進行反向叠代 & 如何實現反向叠代

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:如何進行反向叠代 & 如何實現反向叠代