Cópia de matriz não funciona

Cópia de matriz não funciona

por Renato Campos Afonso -
Número de respostas: 4

Olá

Não está sendo possível copiar a matriz e a função erosão não funciona por causa disso.

Ex - 

 
t = [[1,2,3], [2, 3, 4] , [4, 6, 8]]
 
x = t[:]
 
x
Out[4]: [[1, 2, 3], [2, 3, 4], [4, 6, 8]]
 
t
Out[5]: [[1, 2, 3], [2, 3, 4], [4, 6, 8]]
 
t[0][1] = 3
x
Out[7]: [[1, 3, 3], [2, 3, 4], [4, 6, 8]]
 
Está certo que deixei o ep para último dia, pois estamos com muitas provas, e não vou conseguir entregar este último, ep 16, pois não vou ter tempo de pensar em uma solução diferente da trivial.
 
Sds
 
Renato 
Em resposta à Renato Campos Afonso

Re: Cópia de matriz não funciona

por Humberto Vieira Padula -

O que você está fazendo é copiando a lista de fora com os elementos da lista antiga, mas como esses elementos também são listas, a memória ainda é consultada no local das listas antigas. Dessa forma, e como o Julio já disse, você precisa clonar cada lista dentro da lista grande, na ordem em que aparecem.

Para você visualizar que você pelo menos está clonando a lista grande de fato, tente trocar a ordem de dois elementos (as listas) no clone, aí verá que a lista grande original não mudou, mas isso não é suficiente, como você mesmo viu.