Skip to main content
 首页 » 编程设计

python之对 reversed() 函数的误解

2025年05月04日10tintown

我对 python 还是个新手;但是,我读过一些书,目前正在研究每个内置函数、方法和模块。我遇到过函数:reversed()。我知道参数“seq”处理迭代并且 iter() 对象必须支持 reversed() 方法。对我来说,从逻辑上讲,这会起作用:

x=[1,2,3,4] 
it=iter(x) 
reversed('it') 
"""returns the statement "<reversed object at 0x02738730>" """ 
it.__next__() 
1 

如果我误解了 reversed() 函数,如果这个问题看起来很愚蠢,请原谅。

我的问题:这个函数与 iter 对象的行为究竟如何?

请您参考如下方法:

你有几个问题。首先,您反转了字符串 'it',而不是您的迭代器对象。如果你想反转对象it,你需要做reversed(it)。

但是,这仍然行不通,因为 reverse 不适用于通用迭代器。正如您所注意到的,要反转的对象必须提供一个 __reversed__ 方法——迭代器通常不提供——或者是一个序列。 (因此,要回答您的问题“此函数与 iter 对象的行为究竟如何?”,答案是“它通常不适用于可迭代对象;它们必须是知道如何反转自身的“特殊”可迭代对象。)

您还需要使用您的结果。 reversed 不会就地反转迭代器(这甚至是不可能的);它返回一个 new 反向迭代器。因此,假设 it 是一个可以反转的对象,您需要执行 rev = reversed(it) 然后遍历 rev查看反转的项目。