美文网首页Python
reversed() --反向迭代

reversed() --反向迭代

作者: cook__ | 来源:发表于2018-10-03 13:10 被阅读1次

    使用内建的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、定义一个反向迭代器可使代码变得更加高效,因此这样也就无需先把数据放到列表中,然后再去反向迭代列表了。

    相关文章

      网友评论

        本文标题:reversed() --反向迭代

        本文链接:https://www.haomeiwen.com/subject/icvzoftx.html