python小记(十五):Python 中 for循环中的reversed:深入理解与应用实践

Python 中 for循环中的reversed:深入理解与应用实践


在 Python 的 for 循环里,reversed() 的作用就是让你 反向遍历 一个序列,而不必自己计算索引或手动倒序。它的主要特点和用法有:

  1. 反向遍历列表、元组、字符串等序列

    nums = [1, 2, 3, 4, 5]
    for x in reversed(nums):
        print(x)
    # 输出:5 4 3 2 1
    

    相当于你手动写

    for i in range(len(nums)-1, -1, -1):
        print(nums[i])
    

    但更简洁、可读性更强。

  2. 不额外复制序列(或只做最小化复制)

    • 对于内置的序列类型(如 listtuplestr),reversed() 会调用它们的 __reversed__() 方法,直接返回一个反向迭代器,不会申请新内存去存放倒序列表。
    • 如果一个自定义序列没有实现 __reversed__()reversed() 会退而使用 __len__() + __getitem__(),按索引倒序访问,也无需一次性复制整个对象。
  3. range() 配合:倒序索引或倒序数字序列

    # 常见做法:range(start, stop, step)
    for i in range(10, 0, -1):
        print(i)
    
    # 等价地,你也可以先生成 range,再 reversed
    for i in reversed(range(1, 11)):
        print(i)
    
  4. 用在 enumerate() 上:既要索引又要倒序

    items = ['a','b','c','d']
    for idx, val in enumerate(reversed(items), start=1):
        print(idx, val)
    # 输出:
    # 1 d
    # 2 c
    # 3 b
    # 4 a
    
  5. 和其他迭代器一起链式使用

    import itertools
    data = [1,2,3,4,5,6]
    # 先分块,再倒序遍历每块
    for block in itertools.chunked(data, 2):
        for x in reversed(block):
            print(x)
    

小结

  • 何时用? 只要想把现有序列按相反顺序访问,就用 reversed(),不用自己算索引或生成倒序 copy。
  • 效率? 对内置序列几乎零额外开销,对自定义序列也只是按需索引,没有完整复制。
  • 可读性? 一行搞定倒序,代码更简洁直观。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值