$ curl cheat.sh/
#  `E0_copy` is not a deep copy. You don't make a deep copy using
#  `list()`. (Both `list(...)` and `testList[:]` are shallow copies.)
#  
#  You use [`copy.deepcopy(...)`](http://docs.python.org/2/library/copy.h
#  tmlcopy.deepcopy) for deep copying a list.

 deepcopy(x, memo=None, _nil=[])
     Deep copy operation on arbitrary Python objects.

#  See the following snippet -

 >>> a = [[1, 2, 3], [4, 5, 6]]
 >>> b = list(a)
 >>> a
 [[1, 2, 3], [4, 5, 6]]
 >>> b
 [[1, 2, 3], [4, 5, 6]]
 >>> a[0][1] = 10
 >>> a
 [[1, 10, 3], [4, 5, 6]]
 >>> b   # b changes too -> Not a deepcopy.
 [[1, 10, 3], [4, 5, 6]]

#  Now see the `deepcopy` operation

 >>> import copy
 >>> b = copy.deepcopy(a)
 >>> a
 [[1, 10, 3], [4, 5, 6]]
 >>> b
 [[1, 10, 3], [4, 5, 6]]
 >>> a[0][1] = 9
 >>> a
 [[1, 9, 3], [4, 5, 6]]
 >>> b    # b doesn't change -> Deep Copy
 [[1, 10, 3], [4, 5, 6]]

#  [Sukrit Kalra] [so/q/17873384] [cc by-sa 3.0]

$
Follow @igor_chubin cheat.sh