reversed() --反向迭代

使用内建的reversed()函数实现反向迭代序列中的元素(字符串、列表、元组序列):

a = [1, 2, 3]
for x in reversed(a):
    print(x)
Outs:
3
2
1

注意
1、反向迭代只有在待处理对象拥有可确定的大小时,或者对象实现了__reversed__()特殊方法时,才能奏效;
2、如果这两个条件都无法满足,则必须先将这个对象转换为列表:

f = open('somefile')
for line in reversed(list(f)): print(line)  # 当f特别大时,会消耗大量的内存
在类上自定义实现反向迭代(实现了reversed()方法):
class Countdown:
    def _init__(self, start):
        self.start =start

    # 使用生成器函数生成迭代器
    def __iter__(self):
        n = self.start
        while n>0:
            yield n
            n -= 1

    # 实现__reversed__()方法,实现反向迭代器
    def __reversed__(self):
        n = self.start
        while n<0:
            yield n
            n += 1
总结:

1、使用内建的reversed()函数实现反向迭代序列中的元素(字符串、列表、元组序列);
2、定义一个反向迭代器可使代码变得更加高效,因此这样也就无需先把数据放到列表中,然后再去反向迭代列表了。

    原文作者:cook__
    原文地址: https://www.jianshu.com/p/17e5b7190932
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞