在讨论中这个答案 https://stackoverflow.com/questions/9449674/how-to-implement-a-persistent-python-list/9449852#9449852我们意识到元组没有__reversed__
方法。我的猜测是创建迭代器需要改变元组。然而元组可以很好地配合reversed
。为什么该方法不能用于reversed
为之工作__reversed__
还有?
>>> foo = range(3)
>>> foo
[0, 1, 2]
>>> list(foo.__reversed__())
[2, 1, 0]
>>> foo
[0, 1, 2]
>>> bar = (0, 1, 2)
>>> list(bar.__reversed__())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute '__reversed__'
>>> reversed(bar)
<reversed object at 0x10603b310>
>>> tuple(reversed(bar))
(2, 1, 0)
根据spec https://docs.python.org/2/library/functions.html#reversed:
反转(顺序)
返回一个反向迭代器。 seq 必须是一个具有reversed() 方法或支持序列协议(__len__() 方法和 __getitem__() 方法,其整数参数从
0)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)