copy.deepcopy in python code example

Example 1: python clone object

import copy

new_ob = copy.deepcopy(old_ob)

Example 2: python copy instance

import copy

class A(object):
  def __init__(self, a)
  	self.a = a

a = A(38)

# Deepcopy
a2 = copy.deepcopy(a)

# Shallow copy -> use this if copy.deepcopy() fails
a3 = copy.copy(a)

Example 3: python deepcopy

>>> import copy
>>> nums = [1, 2, 3]
>>> data = {'a': 10, 'b': nums}
>>> data
{'a': 10, 'b': [1, 2, 3]}
>>> data_copy = copy.copy(data)
>>> data_deep = copy.deepcopy(data)
>>> data_copy
{'a': 10, 'b': [1, 2, 3]}
>>> data_deep
{'a': 10, 'b': [1, 2, 3]}
>>> data_copy['a'] += 2
>>> nums[1:1] = [254]
>>> data
{'a': 10, 'b': [1, 254, 2, 3]}
>>> data_copy
{'a': 12, 'b': [1, 254, 2, 3]}
>>> data_deep
{'a': 10, 'b': [1, 2, 3]}

Example 4: 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()