In Python, Assignment statements do not copy objects, they create bindings between a target and an object. Quando usamos =
o usuário do operador pensa que isso cria um novo objeto; bem, ele não cria. ele só cria uma nova variável que compartilha a referência do objeto original. Às vezes um usuário quer trabalhar com objetos mutáveis, a fim de fazer que o usuário procura uma maneira de criar “cópias reais” ou “clones” desses objetos., Ou, às vezes, um usuário quer cópias que o usuário pode modificar sem modificar automaticamente o original ao mesmo tempo, a fim de fazer isso nós criamos cópias de objetos.
uma cópia às vezes é necessária para que uma possa mudar uma cópia sem mudar a outra. Em Python, existem duas maneiras de criar cópias:
- cópia profunda
- cópia superficial
para fazer esta cópia, usamos copy
módulo. Nós usamoscopy
módulo para operações de cópia superficial e profunda.,>
li2
=
copy.copy(li1)
li3
=
copy.deepcopy(li1)
No código acima, o copy()
retorna a cópia superficial da lista e deepcopy()
retornar um profundo cópia da lista.,
cópia profunda
cópia profunda é um processo no qual o processo de cópia ocorre recursivamente. Significa primeiro construir um novo objeto de coleção e depois populá-lo recursivamente com cópias dos objetos-filhos encontrados no original. Em caso de cópia profunda, uma cópia do objeto é copiada em outro objeto. Significa que quaisquer alterações feitas a uma cópia do objeto não refletem no objeto original. Em python, isso é implementado usando a função ” deepcopy ()”.,
Saída:
The original elements before deep copying1 2 4 The new list of elements after deep copying 1 2 4 The original elements after deep copying1 2 4
No exemplo acima, a alteração feita na lista não fez efeito em outras listas, indicando a lista é profundo copiados.
cópia Rasa
uma cópia rasa significa construir um novo objecto de colecção e, em seguida, populá-lo com referências aos objectos-filhos encontrados no original. O processo de cópia não se repete e, portanto, não irá criar cópias dos próprios objectos-filhos., Em caso de cópia rasa, uma referência de objeto é copiada em outro objeto. Significa que quaisquer alterações feitas a uma cópia de objeto refletem no objeto original. Em python, isso é implementado usando a função ” copy ()”.
Saída:
The original elements before shallow copying1 2 4 The original elements after shallow copying1 2 4
No exemplo acima, a alteração feita na lista fez efeito em outra lista, indicando a lista é raso copiados.,
Pontos Importantes:
A diferença entre superficial e profundo, a cópia só é relevante para objetos compostos (objetos que contêm outros objetos, como listas ou instâncias de classe):
- Uma cópia superficial constrói um novo objeto composto e, em seguida, (na medida do possível) insere referências para os objetos encontrados no original.
- uma cópia profunda constrói um novo objeto composto e então, recursivamente, insere cópias nele dos objetos encontrados no original.
Attention geek!, Fortaleça suas fundações com o curso Python Programming Foundation e aprenda o básico.
para começar, os seus preparativos para a entrevista melhoram os conceitos das estruturas de dados com o curso Python DS.