w Pythonie polecenia przydziału nie kopiują obiektów, tworzą powiązania między celem a obiektem. Gdy używamy=
Operator user myśli, że to tworzy nowy obiekt; cóż, tak nie jest. tworzy tylko nową zmienną, która dzieli odniesienie do oryginalnego obiektu. Czasami użytkownik chce pracować ze zmiennymi obiektami, w tym celu szuka sposobu na tworzenie „prawdziwych kopii „lub” klonów ” tych obiektów., Lub, czasami użytkownik chce kopii, które użytkownik może modyfikować bez automatycznego modyfikowania oryginału w tym samym czasie, w tym celu tworzymy kopie obiektów.
czasami potrzebna jest kopia, aby można było zmienić jedną kopię bez zmiany drugiej. W Pythonie istnieją dwa sposoby tworzenia kopii :
- głęboka Kopia
- Płytka Kopia
w celu wykonania tych kopii używamy modułu copy
. Używamy modułu copy
do płytkich i głębokich operacji kopiowania.,>
li2
=
copy.copy(li1)
li3
=
copy.deepcopy(li1)
w powyższym kodzie copy()
i zwraca małą kopię listy i deepcopy()
i zwrot głęboką kopię listy.,
Deep copy
Deep copy jest procesem, w którym proces kopiowania odbywa się rekurencyjnie. Oznacza to najpierw konstruowanie nowego obiektu collection, a następnie rekurencyjne wypełnianie go kopiami obiektów potomnych znalezionych w oryginale. W przypadku głębokiej kopii, kopia obiektu jest kopiowana w innym obiekcie. Oznacza to, że wszelkie zmiany dokonane w kopii obiektu nie odzwierciedlają w oryginalnym obiekcie. W Pythonie jest to zaimplementowane za pomocą funkcji ” deepcopy ()”.,
Wyjście:
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
w powyższym przykładzie zmiana na liście nie miała wpływu na inne listy, wskazując, że lista jest głęboko kopiowana.
Płytka Kopia
płytka Kopia oznacza zbudowanie nowego obiektu kolekcji, a następnie wypełnienie go referencjami do obiektów potomnych znalezionych w oryginale. Proces kopiowania nie wykonuje rekurencji i dlatego nie tworzy kopii obiektów potomnych., W przypadku płytkiej kopii, odniesienie do obiektu jest kopiowane w innym obiekcie. Oznacza to, że wszelkie zmiany dokonane w kopii obiektu odzwierciedlają obiekt oryginalny. W Pythonie jest to zaimplementowane za pomocą funkcji ” copy ()”.
Wyjście:
The original elements before shallow copying1 2 4 The original elements after shallow copying1 2 4
w powyższym przykładzie zmiana dokonana na liście miała wpływ na inną listę, wskazując listę jest płytko kopiowany.,
ważne punkty:
różnica między kopiowaniem płytkim a głębokim dotyczy tylko obiektów złożonych (obiektów, które zawierają inne obiekty, takie jak listy lub instancje klas):
- płytka Kopia konstruuje nowy obiekt złożony, a następnie (w miarę możliwości) wstawia do niego odniesienia do obiektów znalezionych w oryginale.
- głęboka Kopia konstruuje nowy obiekt złożony, a następnie rekurencyjnie wstawia do niego kopie obiektów znalezionych w oryginale.
Uwaga geek!, Wzmocnij swoje podstawy dzięki kursowi Python Programming Foundation i naucz się podstaw.
na początek przygotowanie do rozmowy kwalifikacyjnej wzbogaca koncepcje struktur danych o kurs Python DS.