使用__iter__和__reversed__實現正反向迭代器
阿新 • • 發佈:2021-02-01
使用__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)