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)
|