Sabíamos que as seguintes interações funcionavam para copiar uma lista.
>>> a = [1,2,3] >>> b = a[:] >>> a [1, 2, 3] >>> b [1, 2, 3] >>> b[1] = 5 >>> b [1, 5, 3] >>> a [1, 2, 3]
Com base nisso, tentamos o mesmo com matrizes.
>>> a = [[1,2,3], [4,5,6]] >>> b = a[:] >>> b [[1, 2, 3], [4, 5, 6]] >>> b[1][1] = 7 >>> b [[1, 2, 3], [4, 7, 6]] >>> a [[1, 2, 3], [4, 7, 6]]
No entanto, vê-se que b[1] e a[1] são o mesmo objeto. A solução, ainda utilizando lista de listas, é copiar as listas internas (linhas da matriz) manualmente, como no exemplo seguinte:
>>> a = [[1,2,3], [4,5,6]] >>> b = [] >>> b.append(a[0][:]) >>> b.append(a[1][:]) >>> b [[1, 2, 3], [4, 5, 6]] >>> b[1][1] = 7 >>> b [[1, 2, 3], [4, 7, 6]] >>> a [[1, 2, 3], [4, 5, 6]]