49 lines
909 B
Python
49 lines
909 B
Python
#!/usr/bin/env python
|
||
# -*- encoding: utf-8 -*-
|
||
"""
|
||
Topic: 方向迭代
|
||
Desc :
|
||
"""
|
||
|
||
|
||
def reverse_iterate():
|
||
a = [1, 2, 3, 4]
|
||
for x in reversed(a):
|
||
print(x)
|
||
|
||
# 两个条件:大小可知或者实现__reversed__方法,
|
||
# 如果都不满足,先转换为list
|
||
# Print a file backwards
|
||
# f = open('somefile')
|
||
# for line in reversed(list(f)):
|
||
# print(line, end='')
|
||
|
||
for rr in reversed(Countdown(30)):
|
||
print(rr)
|
||
for rr in Countdown(30):
|
||
print(rr)
|
||
|
||
|
||
class Countdown:
|
||
def __init__(self, start):
|
||
self.start = start
|
||
|
||
# Forward iterator
|
||
def __iter__(self):
|
||
n = self.start
|
||
while n > 0:
|
||
yield n
|
||
n -= 1
|
||
|
||
# Reverse iterator
|
||
def __reversed__(self):
|
||
n = 1
|
||
while n <= self.start:
|
||
yield n
|
||
n += 1
|
||
|
||
|
||
if __name__ == '__main__':
|
||
reverse_iterate()
|
||
|