Python3 reversed() 函数详解 反转列表获取对象的反向迭代器
reversed()
函数的主要作用是获取对象的反向迭代器,参数必须是一个具有__reversed__()方法的对象或者支持序列协议的对象。
它是Python的内置函数,在python文件中直接可以使用。
语法
reversed(seq)
参数
seq - 需要反向转换的对象,只支持具有__reversed__()方法的对象或者支持序列协议的对象。比较常用的有列表(list),元组(tuple),字符串或range对象等。
返回值
对象的反向迭代器
实例
§ 实例1 - 常规用法
#列表
>>> list(reversed([1, 2, 3, 4, 5]))
[5, 4, 3, 2, 1]
#元组
>>> list(reversed(('a', 'b', 'c', 'd', 'e')))
['e', 'd', 'c', 'b', 'a']
#字符串
>>> list(reversed('abcde'))
['e', 'd', 'c', 'b', 'a']
#range范围对象
>>> list(reversed(range(1, 6)))
[5, 4, 3, 2, 1]
§ 实例2 - 具有__reversed__()方法的对象
#如果类中具有了__reversed__()方法,当直接reversed()函数对类的实例化对象或者在函数中实例化类。都将调用类中的__reversed__()方法。实例中只是一个简单的返回演示,但在实际的业务中一般当使用了__reversed__()方法时,都是因为有比较复杂的判断、过滤、二次处理等等需求,然后把处理后的结果返回。
>>> class main:
... def __reversed__(self):
... return [5, 4, 3, 2, 1]
...
>>> o = main()
>>> reversed(o)
[5, 4, 3, 2, 1]
>>> reversed(main())
[5, 4, 3, 2, 1]