badpython Posted March 23, 2020 at 02:26 PM Report Share #617698 Posted March 23, 2020 at 02:26 PM Olá, estou com uma dúvida: Sabem-me dizer quais são as consequências de fazer várias referências a objectos mutáveis ou uma referência a um objecto imutável? Obrigado! Link to comment Share on other sites More sharing options...
PandaVermelho Posted March 24, 2020 at 10:46 AM Report Share #617705 Posted March 24, 2020 at 10:46 AM Uma das consequências que é mais comuns é a questão do Shallow Copy vs Deep Copy nos objetos mutáveis. Exemplo para perceber: Temos uma matriz com dimensões grandes m1= [[....[1,]...]] Shallow copy: m2 = m1 m2[0,...,0] = 2 print(m1[0,...,0]) >>> 2 Deep copy: m2 = m1 m2[0,...,0] = 2 print(m1[0,...,0]) >>> 1 Nos objetos imutáveis acontece sempre uma deep copy, por essa razão os objetos imutáveis não aceitam objetos mutáveis. Informações mais detalhadas sobre Shallow Copy vs Deep Copy (Copy in Python) Link to comment Share on other sites More sharing options...
badpython Posted March 24, 2020 at 11:05 AM Author Report Share #617706 Posted March 24, 2020 at 11:05 AM Ok obrigado! Link to comment Share on other sites More sharing options...
badpython Posted March 28, 2020 at 03:51 PM Author Report Share #617740 Posted March 28, 2020 at 03:51 PM Em 24/03/2020 às 10:46, GameCAA disse: Uma das consequências que é mais comuns é a questão do Shallow Copy vs Deep Copy nos objetos mutáveis. Exemplo para perceber: Temos uma matriz com dimensões grandes m1= [[....[1,]...]] Shallow copy: m2 = m1 m2[0,...,0] = 2 print(m1[0,...,0]) >>> 2 Deep copy: m2 = m1 m2[0,...,0] = 2 print(m1[0,...,0]) >>> 1 Nos objetos imutáveis acontece sempre uma deep copy, por essa razão os objetos imutáveis não aceitam objetos mutáveis. Informações mais detalhadas sobre Shallow Copy vs Deep Copy (Copy in Python) Então, se eu criar uma nova lista a partir de uma outra lista com o Deep Copy, eu nunca vou conseguir alterar os valores da primeira lista? Ou eu posso criar na mesma, uma lista com o Deep Copy para manter as informações da primeira, alterar essa segunda lista com novas informações, e depois conseguir (atravês de outro comando) alterar na primeira lista/objeto caso seja necessário Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now