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, omdata
enb
wijzen nog steeds naar hetzelfde geheugenadres (oorspronkelijke lijst).
So, De nieuwe lijstb
heeft 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.