reversed() function in Python returns an iterator that accesses elements in reverse order. It does not create a new reversed copy of the sequence, making it memory-efficient. It works with sequence types like lists, tuples, strings and ranges or any object that implements the __reversed__() method.
Example: In this example, a list is reversed using reversed() and converted into a list for display.
a = ["nano", "swift", "bolero", "BMW"]
print(list(reversed(a)))
Output
['BMW', 'bolero', 'swift', 'nano']
Explanation: reversed(a) returns an iterator, list() converts the iterator into a list and the elements appear in reverse order.
Syntax
reversed(sequence)Β
- Parameters: sequence - An iterable object such as list, tuple, string or range.
- Return Value: Returns an iterator that produces elements in reverse order.
Note: reversed() function does not work with sets because they are unordered collections.
Examples
Example 1: In this example, reversed() is applied to a tuple and a range object.
t = ('g', 'e', 'e', 'k', 's')
r = range(1, 5)
print(list(reversed(t)))
print(list(reversed(r)))
Output
['s', 'k', 'e', 'e', 'g'] [4, 3, 2, 1]
Explanation: reversed(t) reverses tuple elements, reversed(r) reverses numbers produced by range(1, 5) and list() displays the reversed sequence.
Example 2: Here, reversed() is used inside a for loop to print characters of a string in reverse.
s = "Python"
for ch in reversed(s):
print(ch, end="")
Output
nohtyP
Example 3: In this example, a string is reversed and stored as a new string using join().
s = "Geeks"
rev = "".join(reversed(s))
print(rev)
Output
skeeG
Explanation: reversed(s) returns an iterator of characters, "".join() combines them into a new reversed string and result is stored in rev.
Handling StopIteration in reversed()
When all elements from a reversed iterator are consumed, calling next() again raises a StopIteration exception. This exception can be handled using a try-except block to prevent the program from crashing.
Example 1: In this example, next() is called more times than the number of elements in the reversed iterator, which causes a StopIteration error.
a = [1, 2, 3]
it = reversed(a)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
Output
3
2
1
Traceback (most recent call last):
File "c:\Users\gfg0753\test.py", line 7, in <module>
print(next(it))
~~~~^^^^
StopIteration
Explanation: reversed(a) creates an iterator stored in it, first three next(it) calls return 3, 2 and 1 and the fourth next(it) call raises StopIteration because the iterator is exhausted.
Example 2: In this example, the StopIteration exception is handled using a try-except block to prevent the program from crashing.
a = [1, 2, 3]
it = reversed(a)
try:
while True:
print(next(it))
except StopIteration:
print("Iterator exhausted")
Output
3 2 1 Iterator exhausted
Explanation:
- reversed(a) returns an iterator and next(it) retrieves elements one by one.
- When no elements remain, StopIteration is raised.
- The except StopIteration block catches the exception and prints a message.