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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值