2025-09-10:仓库迁移
This commit is contained in:
31
4.迭代器与生成器/5.反向迭代.py
Normal file
31
4.迭代器与生成器/5.反向迭代.py
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
|
||||
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)
|
Reference in New Issue
Block a user