python when to use copy and deepcopy code example

Example 1: example of a deep copy in python

# deep copy example in python
import copy

old_list = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
new_list = copy.deepcopy(old_list)

old_list[1][0] = 'BB'

print("Old list:", old_list)
print("New list:", new_list)

# OUTPUT
Old list: [[1, 1, 1], ['BB', 2, 2], [3, 3, 3]]
New list: [[1, 1, 1], [2, 2, 2], [3, 3, 3]]

Example 2: python deep copy

# explaining why we need deepcopy
x = [0,1]
y = x
x.append(2)
print(x)
print(y)
# result: [0, 1, 2]
# result: [0, 1, 2]

import copy

some_list = [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
other_list = copy.copy(some_list)
some_list.append([3, 3, 3])
print(some_list)
print(other_list)
# result: [0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]]
# result: [0, 0, 0], [1, 1, 1], [2, 2, 2]]

del some_list[2]
some_list[1][0] = 'One'
print(some_list)
print(other_list)
# result: [0, 0, 0], ['One', 1, 1], [2, 2, 2]]
# result: [0, 0, 0], ['One', 1, 1], [2, 2, 2]]

#this problem doesn't happen with copy.deepcopy()