If you write like this.
s = 'abc' Print (REVERSED (S))
In response, I get – Reversed Object AT 0x003248F0.
Together with Join, it works as it should.
s = 'abc' Print (''. Join (Reversed (S)))
In response – CBA.
So the question is – why the function is directly with the rows, does not work?
Answer 1, Authority 100%
Reversed () works with Arbitrary sequences or objects with
__ REVERSED __ () method and always returns iterator , by order which you can get the elements of the input sequence in the reverse order.
The string is a sequence and then
reversed () can work with it. To get the reverse line at once, you can use the expression
s [:: - 1] :
& gt; & gt; & gt; 'ABC' [:: - 1] 'CBA'
Good question, why the
function is Reversed () does not return the string if it gives the line to the line. For example,
Filter () Function on Python 2 Can return different types:
& gt; & gt; & gt; Filter (None, "ABC") 'ABC' & gt; & gt; & gt; Filter (None, [1,2,3]) [1, 2, 3] & gt; & gt; & gt; Filter (None, (1,2,3)) (1, 2, 3)
in python 3,
Filter () Already returns iterator as and
Reversed () :
& gt; & gt; & gt; Filter (None, "ABC") & lt; Filter Object at 0x7Fe43B586F60 & gt; & gt; & gt; & gt; List (_) ['A', 'B', 'C']
Possible explanation: the use of iterators saves memory (you do not need to hold the entire reverse sequence in memory immediately) and is more general (there is no special processing of built-in type subclasses such as
Reversed () Later function (only in Python 2.4 appeared) Therefore, its interface is more universal with an emphasis on a more economical general and simple implementation.
Answer 2, Authority 33%
The fact is that
Reversed returns an iterator to a reverse string. Look in the documentation: https://docs.python.org/2/library/Functions .html # Reversed
Answer 3, Authority 33%
How to remark the previous stacking,
reversed () Returns the iterator, so you need to determine the function call in
list () or
Tuple () .
And now practice:
s = 'abc' Print (REVERSED (S)))
['C', 'B', 'A']
Iterators are useful in cycles
for , generators and similar. So when around the sequence, for example, wrapping in
list () nothing.