Bird
Raised Fist0
Pythonprogramming~10 mins

List mutability in Python - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - List mutability
Create list
Assign to variable
Modify list element
List content changes
Variable still points to same list
Use modified list
This flow shows how a list is created, modified in place, and the variable still points to the same list with updated content.
Execution Sample
Python
my_list = [1, 2, 3]
my_list[1] = 99
print(my_list)
This code creates a list, changes the second element, and prints the updated list.
Execution Table
StepActionList ContentVariable ReferenceOutput
1Create list [1, 2, 3][1, 2, 3]my_list -> [1, 2, 3]
2Modify element at index 1 to 99[1, 99, 3]my_list -> [1, 99, 3]
3Print list[1, 99, 3]my_list -> [1, 99, 3][1, 99, 3]
4End of program[1, 99, 3]my_list -> [1, 99, 3]Program ends
💡 Program ends after printing the modified list.
Variable Tracker
VariableStartAfter Step 2Final
my_list[1, 2, 3][1, 99, 3][1, 99, 3]
Key Moments - 3 Insights
Why does changing my_list[1] affect the original list?
Because lists are mutable, modifying an element changes the list in place. The variable still points to the same list object, so the change is visible.
Does modifying the list create a new list?
No, the list is changed in place. The variable still references the same list object, just with updated content (see Step 2 in execution_table).
What if we assign my_list = [4, 5, 6] instead of modifying an element?
Then my_list points to a new list object. The original list remains unchanged. This is different from mutating the list content.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 2, what is the list content after modification?
A[1, 2, 3]
B[1, 99, 3]
C[99, 2, 3]
D[1, 3, 99]
💡 Hint
Check the 'List Content' column at Step 2 in the execution_table.
At which step does the variable my_list point to a different list object?
AStep 3
BStep 2
CNone of the steps
DStep 1
💡 Hint
Look at the 'Variable Reference' column; my_list points to the same list throughout.
If we replaced my_list[1] = 99 with my_list = [4, 5, 6], what would happen to the original list?
AIt would remain [1, 2, 3]
BIt would be deleted
CIt would be modified to [4, 5, 6]
DIt would become empty
💡 Hint
Assigning a new list to my_list changes the variable's reference, not the original list object.
Concept Snapshot
List mutability means lists can be changed after creation.
Modify elements by index: my_list[1] = new_value.
The variable still points to the same list object.
Changes affect the original list in place.
Assigning a new list changes the variable's reference.
Full Transcript
This example shows how a list in Python can be changed after it is created. First, a list [1, 2, 3] is made and stored in the variable my_list. Then, the second element (index 1) is changed to 99. Because lists are mutable, this change updates the original list. The variable my_list still points to the same list, but now the list content is [1, 99, 3]. When we print my_list, it shows the updated list. This demonstrates that modifying a list element changes the list in place without creating a new list object.

Practice

(1/5)
1. Which of the following statements about Python lists is true?
easy
A. Lists cannot be changed once created.
B. Lists can be changed after they are created.
C. Lists are immutable like strings.
D. Lists can only store numbers.

Solution

  1. Step 1: Understand list mutability

    Python lists are mutable, meaning you can change their contents after creation.
  2. Step 2: Compare options

    Lists can be changed after they are created. ("Lists can be changed after they are created.") correctly states that lists are mutable. Options A and C incorrectly claim lists cannot be changed or are immutable like strings. Lists can only store numbers. is wrong because lists can store any data type.
  3. Final Answer:

    Lists can be changed after they are created. -> Option B
  4. Quick Check:

    List mutability = True [OK]
Hint: Remember: lists are like clay, easy to reshape [OK]
Common Mistakes:
  • Confusing lists with strings (immutable)
  • Thinking lists only hold numbers
  • Believing lists cannot be changed
2. Which of the following is the correct way to change the first item of a list my_list to 10?
easy
A. my_list[0] = 10
B. my_list(0) = 10
C. my_list{0} = 10
D. my_list.set(0, 10)

Solution

  1. Step 1: Recall list item assignment syntax

    In Python, list items are accessed and assigned using square brackets and index, like my_list[0].
  2. Step 2: Check each option

    my_list[0] = 10 uses correct syntax. Options B and C use wrong brackets. my_list.set(0, 10) uses a method that does not exist for lists.
  3. Final Answer:

    my_list[0] = 10 -> Option A
  4. Quick Check:

    Use square brackets for list item assignment [OK]
Hint: Use square brackets [] to access or change list items [OK]
Common Mistakes:
  • Using parentheses instead of brackets
  • Trying to use curly braces for indexing
  • Assuming lists have a set() method
3. What will be the output of this code?
numbers = [1, 2, 3]
numbers[1] = 5
print(numbers)
medium
A. [1, 5, 3]
B. [1, 2, 3]
C. [5, 2, 3]
D. Error

Solution

  1. Step 1: Understand list item update

    The code changes the item at index 1 (second item) from 2 to 5.
  2. Step 2: Check the final list

    After update, the list becomes [1, 5, 3]. The print statement outputs this list.
  3. Final Answer:

    [1, 5, 3] -> Option A
  4. Quick Check:

    Updated list = [1, 5, 3] [OK]
Hint: Index 1 means second item in list [OK]
Common Mistakes:
  • Thinking index 1 is first item
  • Expecting original list unchanged
  • Assuming code causes error
4. Find the error in this code that tries to change a list item:
my_list = [10, 20, 30]
my_list(1) = 15
print(my_list)
medium
A. Missing colon after assignment
B. List cannot be changed after creation
C. Using parentheses instead of square brackets for indexing
D. print statement syntax error

Solution

  1. Step 1: Identify indexing syntax error

    The code uses parentheses () instead of square brackets [] to access list item.
  2. Step 2: Confirm correct syntax

    List items must be accessed with square brackets, so my_list[1] = 15 is correct.
  3. Final Answer:

    Using parentheses instead of square brackets for indexing -> Option C
  4. Quick Check:

    Use [] not () for list indexing [OK]
Hint: Remember: () calls functions, [] accesses list items [OK]
Common Mistakes:
  • Using () instead of [] for list indexing
  • Thinking lists are immutable
  • Looking for syntax errors elsewhere
5. Given the list data = [5, 10, 15, 20], which code snippet correctly doubles each item in the list using mutability?
hard
A. data = [item * 2 for item in data] print(data)
B. for item in data: item = item * 2 print(data)
C. data.map(lambda x: x*2) print(data)
D. for i in range(len(data)): data[i] = data[i] * 2 print(data)

Solution

  1. Step 1: Understand mutability and iteration

    To change items in place, we must assign new values to each index in the list.
  2. Step 2: Analyze each option

    for i in range(len(data)): data[i] = data[i] * 2 print(data) updates each item by index, correctly doubling values in place.
    for item in data: item = item * 2 print(data) changes only the loop variable, not the list.
    data = [item * 2 for item in data] print(data) creates a new list and assigns it to data (not in-place mutation).
    data.map(lambda x: x*2) print(data) uses map which returns an iterator and does not modify list in place.
  3. Final Answer:

    for i in range(len(data)): data[i] = data[i] * 2 print(data) -> Option D
  4. Quick Check:

    In-place update requires index assignment [OK]
Hint: Use index to update list items for true mutability [OK]
Common Mistakes:
  • Modifying loop variable instead of list items
  • Using map without converting result
  • Replacing list instead of mutating it