Array Declaration and Initialization in DSA Python - Time & Space Complexity
When we create and fill an array, we want to know how long it takes as the array gets bigger.
We ask: How does the time to set up the array grow with its size?
Analyze the time complexity of the following code snippet.
n = 5
arr = [0] * n
for i in range(n):
arr[i] = i + 1
This code creates an array of size n and fills it with numbers from 1 to n.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that sets each element in the array.
- How many times: It runs exactly n times, once for each element.
As the array size grows, the number of steps grows in the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 steps to fill the array |
| 100 | 100 steps to fill the array |
| 1000 | 1000 steps to fill the array |
Pattern observation: Doubling the array size doubles the work needed to fill it.
Time Complexity: O(n)
This means the time to fill the array grows directly with its size.
[X] Wrong: "Creating and filling an array is instant and does not depend on size."
[OK] Correct: Each element must be set one by one, so bigger arrays take more time.
Understanding how array setup time grows helps you explain efficiency clearly in interviews.
"What if we initialize the array with a fixed value without a loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand Python array syntax and check each option
In Python, arrays are usually represented by lists, which use square brackets [].arr = [1, 2, 3]uses square brackets with values 1, 2, 3 which is correct.arr = (1, 2, 3)uses parentheses which create a tuple, not an array.arr = {1, 2, 3}uses curly braces which create a set, not an array.arr = int[3]is invalid syntax in Python.Final Answer:
arr = [1, 2, 3] -> Option BQuick Check:
List syntax = [1, 2, 3] [OK]
- Using parentheses () instead of square brackets
- Using curly braces {} which create sets
- Trying to declare array size like int[3]
Solution
Step 1: Identify empty list syntax and evaluate options
In Python, an empty list is created using empty square brackets [].list = []uses [], which is correct.list = ()uses parentheses which create an empty tuple.list = {}uses curly braces which create an empty dictionary.list = empty()is invalid syntax.Final Answer:
list = [] -> Option CQuick Check:
Empty list = [] [OK]
- Using () which creates a tuple
- Using {} which creates a dictionary
- Trying to call empty() function which doesn't exist
arr = [0] * 4 print(arr)
Solution
Step 1: Understand list multiplication and predict the output
Multiplying a list by an integer repeats the list elements that many times. Here, [0] * 4 creates a list with four zeros. The print statement outputs the list: [0, 0, 0, 0].Final Answer:
[0, 0, 0, 0] -> Option DQuick Check:
[0] * 4 = [0, 0, 0, 0] [OK]
- Expecting a range of numbers instead of repeated zeros
- Confusing list multiplication with addition
- Thinking it causes an error
arr = [1, 2, 3] arr[3] = 4 print(arr)
Solution
Step 1: Check list indices and analyze assignment at index 3
List indices start at 0. For a list of length 3, valid indices are 0, 1, 2. Trying to assign arr[3] = 4 is invalid because index 3 does not exist yet, causing an IndexError.Final Answer:
IndexError: list assignment index out of range -> Option AQuick Check:
Index 3 invalid for length 3 list [OK]
- Trying to assign to an index outside the list
- Confusing append with direct index assignment
- Expecting automatic list resizing
Solution
Step 1: Understand 2D array creation pitfalls and analyze each option
Using[[0]*4]*3creates 3 references to the same inner list, causing changes in one row to affect others.arr = [[0]*4]*3 print(arr)
creates shared inner lists (bad).arr = [[0 for _ in range(4)] for _ in range(3)] print(arr)
uses nested list comprehension creating independent inner lists (correct).arr = [0]*3 for i in range(4): arr[i] = [0]*4 print(arr)has index errors and wrong loop ranges.arr = [[0]*3 for _ in range(4)] print(arr)
creates 4 rows and 3 columns, which is reversed.Final Answer:
arr = [[0 for _ in range(4)] for _ in range(3)] -> Option AQuick Check:
Nested list comprehension avoids shared references [OK]
- Using multiplication for nested lists causing shared references
- Mixing up rows and columns sizes
- Index errors in loops when initializing
Ready to prove it?
Pass the test and this pattern moves unknown
