GeeksforGeeks (Dansk)

I Python -, Tildelings-sætninger ikke kopiere objekter, de skaber bindinger mellem et mål og et objekt. Når vi bruger = operatør brugeren mener, at dette skaber et nyt objekt; godt, det gør det ikke. Det skaber kun en ny variabel, der deler reference til det oprindelige objekt. Nogle gange ønsker en bruger at arbejde med mutable objekter, for at gøre, at brugeren søger en måde at skabe “rigtige kopier” eller “kloner” af disse objekter., Eller nogle gange ønsker en bruger Kopier, som brugeren kan ændre uden automatisk at ændre originalen på samme tid, for at gøre det, vi opretter kopier af objekter.

en kopi er undertiden nødvendig, så man kan ændre en kopi uden at ændre den anden. I Python er der to måder at oprette kopier på :

  • Deep copy
  • Shallo.copy

for at lave disse kopier bruger vi copy modul. Vi bruger copy modul til lavvandede og dybe kopieringsoperationer.,>

li2 = copy.copy(li1)
li3 = copy.deepcopy(li1)



I ovenstående kode, den copy() returnerer overfladisk kopi af listen, og deepcopy() returnere en dyb kopi af listen.,

Deep copy

Deep copy er en proces, hvor kopieringsprocessen sker rekursivt. Det betyder først at konstruere et nyt samlingsobjekt og derefter rekursivt fylde det med kopier af de børneobjekter, der findes i originalen. I tilfælde af dyb kopi kopieres en kopi af objekt i et andet objekt. Det betyder, at eventuelle ændringer i en kopi af objekt ikke afspejler i det oprindelige objekt. I python implementeres dette ved hjælp af “deepcopy ()” – funktionen.,



Output:

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 

I ovenstående eksempel, er den ændring, der er foretaget i den liste har ikke virkning i andre lister, angiver den liste, der er dybt kopieret.

Shallo.copy

en shallo. copy betyder at konstruere et nyt samlingsobjekt og derefter udfylde det med referencer til de underordnede objekter, der findes i originalen. Kopieringsprocessen recurse ikke og derfor vil ikke oprette kopier af barnet objekter selv., I tilfælde af overfladisk kopiering kopieres en henvisning til objekt i et andet objekt. Det betyder, at eventuelle ændringer i en kopi af objekt afspejler i den oprindelige objekt. I python implementeres dette ved hjælp af “copy ()” – funktionen.



Output:

The original elements before shallow copying1 2 4 The original elements after shallow copying1 2 4 

i ovenstående eksempel virkede ændringen i listen i anden liste, hvilket indikerer, at listen er overfladisk kopieret.,

Vigtige Punkter:
forskellen mellem lavt og dybt kopiering er kun relevant for sammensatte objekter (objekter, der kan indeholde andre objekter, som lister eller klasse forekomster):

  • En overfladisk kopi konstruerer en ny sammensat objekt og derefter (i det omfang det er muligt) skær referencer ind i det, til de objekter, der findes i den originale.
  • en dyb kopi konstruerer et nyt sammensat objekt og indsætter derefter rekursivt kopier i det af de objekter, der findes i originalen.

opmærksomhed nørd!, Styrk dine fundamenter med Python programmering Foundation kursus og lære det grundlæggende.

til at begynde med Forbedrer dine intervie .forberedelser dine datastrukturkoncepter med Python DS-kurset.

Artikel Tags :

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *