Assegnazione vs. Shallow Copy vs. Deep Copy in Python

Shallow Copy

Una copia shallow costruisce un nuovo oggetto composto e quindi (per quanto possibile) inserisce riferimenti agli oggetti trovati nell’originale.

Ci sono tre modi diversi per creare una copia superficiale:

Qui, tutti gli elenchi contengono gli stessi valori dell’elenco originale:

>>> print(nums == m1 == m2 == m3)
True

Tuttavia, l’indirizzo di memoria di ciascuno è diverso.,

Ciò significa che questa volta, l’oggetto di ogni lista ha il proprio indirizzo di memoria indipendente.

Ora passiamo alla parte più interessante. Se l’elenco originale è un oggetto composto (ad esempio un elenco di elenchi), dopo una copia superficiale, i nuovi elementi dell’elenco fanno ancora riferimento agli elementi originali.

Quindi, se modifichi gli elementi mutabili come gli elenchi, le modifiche si rifletteranno sugli elementi originali., Vediamo il seguente esempio per capire meglio:

Come si può vedere nell’esempio di cui sopra, mentre si sta modificando la lista interna elementi nel nuovo elenco è aggiornato nella lista originale anche, perché a e b ancora lo stesso indirizzo di memoria (la lista originale).

Quindi, la nuova lista b ha un proprio indirizzo di memoria ma i suoi elementi no., Questo perché, in shallow copy, invece di copiare gli elementi della lista sul nuovo oggetto, copia semplicemente i riferimenti ai loro indirizzi di memoria.

Pertanto, mentre stiamo apportando modifiche all’oggetto originale, si riflette negli oggetti copiati e viceversa.

Questa è una caratteristica di una copia superficiale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Vai alla barra degli strumenti