为什么Python中的元组使用反向,但没有反向?
在对的讨论中,我们意识到元组没有一个为什么Python中的元组使用反向,但没有反向?,python,iterator,tuples,immutability,reverse,Python,Iterator,Tuples,Immutability,Reverse,在对的讨论中,我们意识到元组没有一个\uuuuuuuuuuuuuuu方法。我猜想创建迭代器需要对元组进行变异。然而,元组在反转时也能很好地发挥作用。为什么用于反向的方法不能同样适用于\uuuu反向 >>> foo = range(3) >>> foo [0, 1, 2] >>> list(foo.__reversed__()) [2, 1, 0] >>> foo [0, 1, 2] >>> bar = (0
\uuuuuuuuuuuuuuu
方法。我猜想创建迭代器需要对元组进行变异。然而,元组在反转时也能很好地发挥作用。为什么用于反向
的方法不能同样适用于\uuuu反向
>>> 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)
>foo=范围(3)
>>>福
[0, 1, 2]
>>>列表(foo.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
[2, 1, 0]
>>>福
[0, 1, 2]
>>>条=(0,1,2)
>>>列表(条形图)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“tuple”对象没有属性“\uuuuuuuuuuuu”
>>>反向(巴)
>>>元组(反向(条形))
(2, 1, 0)
根据以下内容:
反向(seq)
返回一个反向迭代器。seq必须是具有
反向()方法或支持序列协议(从开始的整数参数为
0)。
编辑:好吧,我试着再说一遍(英语不是我的母语)-举个例子
有些函数-我称它们为fun(object)
-可以使用object.\uu func\uuu()
来完成任务,或者如果没有对象,它们可以使用对象中的其他函数。\uu func\uu()
-
例如str()
-当您使用str(object)
时,它会调用对象。
,但如果没有对象。
则它会调用对象。
因此,您可以对没有的对象使用str()
,并且仍然可以得到一些结果
-
另一个例子我真的不知道你想说什么。。。需要详细说明吗?关键是说,“支持序列协议的对象应该只提供_reversed _(),如果它们能够提供比reversed()提供的实现更高效的实现。”
class MyClass():
def __str__(self):
return "MyClass: __str__"
def __repr__(self):
return "MyClass: __repl__"
#-------------------------
def __lt__(self, other):
return True
def __gt__(self, other):
return True
#-------------------------
a = MyClass()
b = MyClass()
print( str(a) )
print( a < b )