reversed() function in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how the time needed to reverse a list grows as the list gets bigger.
How does using the reversed() function affect the work done when the input size changes?
Analyze the time complexity of the following code snippet.
my_list = [1, 2, 3, 4, 5]
for item in reversed(my_list):
print(item)
This code prints the items of a list in reverse order using the reversed() function.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each item in the list once in reverse order.
- How many times: Exactly once for each item in the list (n times).
As the list gets longer, the number of steps to go through all items in reverse grows in the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps to print all items |
| 100 | 100 steps to print all items |
| 1000 | 1000 steps to print all items |
Pattern observation: The work grows directly with the number of items. Double the items, double the work.
Time Complexity: O(n)
This means the time to iterate and process the list grows in a straight line with the list size.
[X] Wrong: "reversed() instantly returns the reversed list without any work."
[OK] Correct: reversed() creates an iterator that goes through each item once, so it still takes time proportional to the list size.
Understanding how built-in functions like reversed() work helps you explain your code clearly and shows you know what happens behind the scenes.
What if we changed reversed(my_list) to my_list[::-1]? How would the time complexity change?
Practice
reversed() function do in Python?Solution
Step 1: Understand the purpose of reversed()
Thereversed()function returns an iterator that accesses the elements of a sequence in reverse order.Step 2: Check if original sequence changes
The original sequence remains unchanged;reversed()only provides a way to loop backwards.Final Answer:
It returns an iterator that goes through the items of a sequence backwards. -> Option BQuick Check:
reversed() returns reversed iterator [OK]
- Thinking reversed() sorts the sequence
- Assuming reversed() modifies the original sequence
- Confusing reversed() with removing duplicates
reversed() to print characters of a string backwards?Solution
Step 1: Identify correct function syntax
reversed()is a built-in function called with parentheses and a sequence inside, likereversed('hello').Step 2: Check loop syntax
The for loop correctly iterates over the reversed iterator returned byreversed().Final Answer:
for ch in reversed('hello'): print(ch) -> Option AQuick Check:
Use reversed() with parentheses and a sequence [OK]
- Using square brackets instead of parentheses
- Calling reversed as a method on string
- Typing reverse instead of reversed
print(list(reversed([1, 2, 3, 4])))
Solution
Step 1: Apply reversed() to the list
reversed([1, 2, 3, 4])returns an iterator that goes through the list backwards: 4, 3, 2, 1.Step 2: Convert iterator to list
Usinglist()on the reversed iterator collects all items into a new list in reversed order.Final Answer:
[4, 3, 2, 1] -> Option CQuick Check:
list(reversed([1,2,3,4])) = [4,3,2,1] [OK]
- Expecting reversed() to return a list directly
- Confusing reversed() with sort()
- Thinking reversed() modifies original list
my_str = 'abc' rev_str = reversed(my_str) print(rev_str)
Solution
Step 1: Understand what reversed() returns
reversed(my_str)returns an iterator, not a string.Step 2: Printing the iterator shows its object info
Printingrev_strdirectly prints something like<reversed object at ...>, not the reversed characters.Final Answer:
It prints a reversed iterator object, not the reversed string. -> Option AQuick Check:
reversed() returns iterator, print shows object [OK]
- Expecting reversed() to return a string
- Trying to print reversed() result directly
- Thinking reversed() modifies original string
reversed() to create a new string that is the reverse of the original string s = 'Python'?Solution
Step 1: Use reversed() to get reversed iterator
reversed(s)returns an iterator over characters ofsin reverse order.Step 2: Join characters into a new string
''.join(reversed(s))combines the reversed characters into a new string.Final Answer:
new_s = ''.join(reversed(s)) -> Option DQuick Check:
Use join() with reversed() to build reversed string [OK]
- Assigning reversed(s) directly to string variable
- Using s.reverse() which is invalid for strings
- Confusing slicing with reversed()
