toewijzing vs. ondiepe kopie vs. diepe kopie in Python


ondiepe kopie

een ondiepe kopie maakt een nieuw samengesteld object en voegt er dan (voor zover mogelijk) verwijzingen in toe naar de objecten die in het origineel zijn gevonden.

we hebben drie verschillende manieren om een ondiepe kopie te maken:

Hier bevatten alle bovenstaande lijsten dezelfde waarden als de oorspronkelijke lijst:

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

echter, het geheugen adres van elk is anders.,

Dit betekent dat het object van elke lijst Deze keer zijn eigen, onafhankelijke geheugenadres heeft.

nu gaan we naar het interessantere deel. Als de oorspronkelijke lijst een samengesteld object is (bijvoorbeeld een lijst met lijsten), dan verwijzen nieuwe lijstelementen na een ondiepe kopie nog steeds naar de oorspronkelijke elementen.

dus, als u de veranderbare elementen zoals lijsten wijzigt, zullen de wijzigingen worden weerspiegeld op de oorspronkelijke elementen., Laten we eens kijken naar het onderstaande voorbeeld voor een beter begrip:

zoals u ziet in het bovenstaande voorbeeld, terwijl we de interne lijst-elementen in de nieuwe lijst wijzigen, wordt deze ook bijgewerkt in de oorspronkelijke lijst, omdataenbwijzen nog steeds naar hetzelfde geheugenadres (oorspronkelijke lijst).

So, De nieuwe lijstbheeft zijn eigen geheugenadres, maar de elementen niet., Dit komt omdat, in een ondiepe kopie, in plaats van de elementen van de lijst naar het nieuwe object te kopiëren, het gewoon de verwijzingen naar hun geheugenadressen kopieert.

daarom, terwijl we wijzigingen aanbrengen aan het oorspronkelijke object, wordt dit weerspiegeld in de gekopieerde objecten en vice versa.

Dit is een kenmerk van een ondiepe kopie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Spring naar toolbar