The deepcopy option is the only method that works for me:
from copy import deepcopya = [ [ list(range(1, 3)) for i in range(3) ] ]b = deepcopy(a)b[0][1]=[3]print('Deep:')print(a)print(b)print('-----------------------------')a = [ [ list(range(1, 3)) for i in range(3) ] ]b = a*1b[0][1]=[3]print('*1:')print(a)print(b)print('-----------------------------')a = [ [ list(range(1, 3)) for i in range(3) ] ]b = a[:]b[0][1]=[3]print('Vector copy:')print(a)print(b)print('-----------------------------')a = [ [ list(range(1, 3)) for i in range(3) ] ]b = list(a)b[0][1]=[3]print('List copy:')print(a)print(b)print('-----------------------------')a = [ [ list(range(1, 3)) for i in range(3) ] ]b = a.copy()b[0][1]=[3]print('.copy():')print(a)print(b)print('-----------------------------')a = [ [ list(range(1, 3)) for i in range(3) ] ]b = ab[0][1]=[3]print('Shallow:')print(a)print(b)print('-----------------------------')
leads to output of:
Deep:[[[1, 2], [1, 2], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------*1:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------Vector copy:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------List copy:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------.copy():[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------Shallow:[[[1, 2], [3], [1, 2]]][[[1, 2], [3], [1, 2]]]-----------------------------