Data Structures16 min read
Copy vs Deep Copy
Learn shallow vs deep copying with nested structures, why shallow copy breaks in nested lists/dicts, and the correct fixes with examples.
David Miller
October 12, 2025
7.1k204
Copying is easy when data is flat, but tricky when nested.
Shallow copy vs deep copy
- Shallow copy copies the outer container only
- Deep copy copies everything inside (nested items too)
Shallow copy example (problem)
a = [[1, 2], [3, 4]]
b = a.copy()
b[0].append(99)
print(a) # [[1,2,99],[3,4]] <-- changed!
print(b)
Why?
Because inner lists are still shared.
Deep copy (solution)
import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)
b[0].append(99)
print(a) # [[1,2],[3,4]]
print(b) # [[1,2,99],[3,4]]
Graph: shallow vs deep
flowchart LR
A[Outer list] --> B[Inner list 1]
A --> C[Inner list 2]
D[Shallow copy] --> B
D --> C
E[Deep copy] --> F[New inner list 1]
E --> G[New inner list 2]
Remember
- Shallow copy is fine for flat structures
- Nested structures often need deepcopy
- Know this to avoid hidden bugs
#Python#Beginner#Core Skills