Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, estou com uma dúvida em um código em Python que estou escrevendo. Parece ser simples mas é algo que não estou conseguindo entender.
A dúvida é a seguinte:
m=[[1,2,3],[4,5,6],[7,8,9]]
n=m
n[0]=m[2]
n[2]=m[0]
print(n)
A resposta que obtenho é [[7,8,9],[4,5,6],[7,8,9]] ao invés de [[7,8,9],[4,5,6],[1,2,3]] como esperava que fosse.
Alguém sabe por que?
Obrigado!
Clonei a lista e deu certo Rodrigo. Obrigado!!
Vinicius,
Esse problema ocorre pois as informações da variável m estão armazenadas em um endereço da memória do computador. Quando você faz n = m, é associado à variável n um endereço de memória diferente da variável m, porém elas compartilham de valores iguais. As listas [1,2,3],[4,5,6],[7,8,9] são compartilhadas pelas variáveis m e n.
Se você fizer qualquer alteração na lista da variável m, então a variável n também receberá essa alteração. Afinal os dados estão sendo compartilhado pelas duas variáveis.
No vídeo https://www.youtube.com/watch?v=4TN8IdsJ78k o professor Fabio Kon da USP explica com mais detalhes o que está acontecendo. Aqui também tem umas informações interessantes: https://pythonhelp.wordpress.com/2013/02/20/variaveis-valores-e-referencias/
Não pretendo colocar a solução aqui, agora. Vamos tentar descobrir como resolver isso com base nas informações passadas. =)