import copy
def shallow_n_deep_copy():
a = {'a': [1, 2, 3]}
b = a.copy()
print('a:', a, 'b:', b)
a['a'].append(4)
print('a:', a, 'b:', b)
c = copy.deepcopy(a)
a['a'].append(5)
print('a:', a, 'b:', b, 'c:', c)
def init_2d_array_error(i, j, value):
numlist = [[value]*j]*i
return numlist
def init_2d_array_ok(i, j, value):
numlist = [[value for y in range(0, j)] for x in range(0, i)]
return numlist
if __name__ == "__main__":
shallow_n_deep_copy()
print("2*3=", 2*3)
print("2**3=", 2**3)
a = init_2d_array_error(2, 3, 0)
print(a)
a[0][1] = 1
print(a)
b = init_2d_array_ok(2, 3, 0)
print(b)
b[0][1] = 1
print(b)
console output
a: {'a': [1, 2, 3]} b: {'a': [1, 2, 3]}
a: {'a': [1, 2, 3, 4]} b: {'a': [1, 2, 3, 4]}
a: {'a': [1, 2, 3, 4, 5]} b: {'a': [1, 2, 3, 4, 5]} c: {'a': [1, 2, 3, 4]}
2*3= 6
2**3= 8
[[0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 1, 0]]
[[0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 0, 0]]