In Python, le istruzioni di assegnazione non copiano gli oggetti, creano collegamenti tra un target e un oggetto. Quando usiamo=
l’operatore utente pensa che questo crei un nuovo oggetto; beh, non lo fa. Crea solo una nuova variabile che condivide il riferimento dell’oggetto originale. A volte un utente vuole lavorare con oggetti mutabili, per farlo l’utente cerca un modo per creare “copie reali” o “cloni” di questi oggetti., Oppure, a volte un utente desidera copie che l’utente può modificare senza modificare automaticamente l’originale allo stesso tempo, per farlo creiamo copie di oggetti.
A volte è necessaria una copia in modo da poter cambiare una copia senza cambiare l’altra. In Python, ci sono due modi per creare copie:
- Deep copy
- Shallow copy
Per fare queste copie, usiamo il modulocopy
. Usiamocopy
modulo per operazioni di copia superficiale e profonda.,>
li2
=
copy.copy(li1)
li3
=
copy.deepcopy(li1)
Nel codice di cui sopra, il copy()
restituisce la copia superficiale della lista e deepcopy()
restituire una copia profonda di elenco.,
Deep copy
Deep copy è un processo in cui il processo di copia avviene in modo ricorsivo. Significa prima costruire un nuovo oggetto di raccolta e quindi popolarlo ricorsivamente con copie degli oggetti figlio trovati nell’originale. In caso di copia profonda, una copia dell’oggetto viene copiata in un altro oggetto. Significa che le modifiche apportate a una copia dell’oggetto non si riflettono nell’oggetto originale. In python, questo è implementato usando la funzione ” deepcopy ()”.,
Uscita:
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
Nell’esempio precedente, il cambiamento nella lista non hanno effetto in altri elenchi, indicando l’elenco è profondo copiato.
Copia superficiale
Una copia superficiale significa costruire un nuovo oggetto di raccolta e quindi popolarlo con riferimenti agli oggetti figlio trovati nell’originale. Il processo di copia non ricorre e quindi non creerà copie degli oggetti figlio stessi., In caso di copia superficiale, un riferimento di oggetto viene copiato in un altro oggetto. Significa che tutte le modifiche apportate a una copia dell’oggetto si riflettono nell’oggetto originale. In python, questo è implementato usando la funzione ” copy ()”.
Uscita:
The original elements before shallow copying1 2 4 The original elements after shallow copying1 2 4
Nell’esempio precedente, la modifica apportata nell’elenco ha effetto in un altro elenco, indicando l’elenco è poco profondo copiato.,
Punti importanti:
La differenza tra la copia superficiale e profonda è rilevante solo per gli oggetti composti (oggetti che contengono altri oggetti, come elenchi o istanze di classe):
- Una copia superficiale costruisce un nuovo oggetto composto e quindi (per quanto possibile) inserisce riferimenti agli oggetti trovati nell’originale.
- Una copia profonda costruisce un nuovo oggetto composto e quindi, ricorsivamente, inserisce copie degli oggetti trovati nell’originale.
Attenzione geek!, Rafforza le tue basi con il corso Python Programming Foundation e impara le basi.
Per cominciare, i preparativi per l’intervista migliorano i concetti delle strutture dati con il corso Python DS.