32 lines
771 B
Python
32 lines
771 B
Python
|
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
a = [1, 2, 3, 4]
|
|||
|
# python自带的reversed函数搞定了反向迭代,其本质时调用了__reversed__方法
|
|||
|
for i in reversed(a):
|
|||
|
print(i)
|
|||
|
|
|||
|
for i in a.__reversed__():
|
|||
|
print(i)
|
|||
|
|
|||
|
# 如果想要实现类的反向迭代,可以在实现__iter__()方法的同时搞一个__reversed__()方法
|
|||
|
class Countdown:
|
|||
|
def __init__(self, start):
|
|||
|
self.start = start
|
|||
|
|
|||
|
def __iter__(self):
|
|||
|
n = self.start
|
|||
|
while n > 1:
|
|||
|
yield n
|
|||
|
n -= 1
|
|||
|
|
|||
|
def __reversed__(self):
|
|||
|
n = 1
|
|||
|
while n <= self.start:
|
|||
|
yield n
|
|||
|
n += 1
|
|||
|
|
|||
|
a = Countdown(10)
|
|||
|
for i in reversed(a):
|
|||
|
print(i)
|