1. 程式人生 > 其它 >使用__iter__和__reversed__實現正反向迭代器

使用__iter__和__reversed__實現正反向迭代器

技術標籤:python生成器iterator

使用__iter__和__reversed__實現正反向迭代器

概述:內建的iter(),reversed()函式可以進行正反向迭代,如果需要定製正反向迭代,要怎麼做呢?
事實上iter()函式是呼叫的__iter__方法, reversed(),則是呼叫的__reversed__方法,那麼只需要重寫這兩個方法即可。

class Countdown:
    def __init__(self, start):
        self.start = start
    
    # 向前迭代函式(數從大到小輸出)
    def __iter__
(self): n = self.start while n > 0: yield n n -= 1 # 反向迭代(數從小到大輸出) def __reversed__(self): n = 1 while n <= self.start: yield n n += 1 Count = Countdown(5) # 向前迭代 for i in iter(Count): # 或者寫成for i in Count:也行
print(i) print("我是分割線...") # 向後迭代 for x in reversed(Count): print(x)

在這裡插入圖片描述