Shallow copy creates a new object, but nested objects are shared. Deep copy creates copies of all nested objects.
1import copy23original = [[1, 2], [3, 4]]45# Shallow copy6shallow = copy.copy(original)7shallow[0][0] = 9998print(original) # [[999, 2], [3, 4]] — changed!910# Deep copy11original = [[1, 2], [3, 4]]12deep = copy.deepcopy(original)13deep[0][0] = 99914print(original) # [[1, 2], [3, 4]] — unchanged
Shallow copy methods:
copy.copy().list.copy().list(original).original[:].When to use: