列表和集合 / 迭代器和生成器

class Reverse:
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index -= 1
        return self.data[self.index]


for c in Reverse("string"):
    print(c)
# printed: g, n, i, r, t, s

for i in Reverse([123]):
    print(i)
# printed: 3, 2, 1