Python Copie: Superficială și Profundă

În python avem așa-numitul deep copy ” și „copie superficial’, de exemplu:

import copyx = copy.copy(y) # shallow copy of yx = copy.deepcopy(y) # deep copy of y

diferența între suprafață și adâncime copierea este relevantă numai pentru compusul obiecte (obiecte care conțin alte obiecte, cum ar fi „lista”, `dict`, `set`, `tuplu ” și ” bytearray` sau cazuri de clasă).

– o copie superficială construiește un nou obiect compus și apoi (în măsura în care este posibil) introduce *aceleași obiecte* în el pe care le conține originalul

.,

– o copie profundă construiește un nou obiect compus și apoi, recursiv,

introduce *copii* în el a obiectelor găsite în original.

Note:

1. Pentru „listă”, „dict”, ” set ” și „bytearray”, ” copie.copie „este echivalent cu” lista.recepționat, dict.copie”, ” set.copiați ” și ” bytearray.copy ‘ respectiv.

asta este, toate metoda de clasă „copie” de „listă”, „dict”, ” set ” și „bytearray” sunt copie superficială.

2. Copie superficială este un algoritm de complexitate „O(N) „unde” N ” este lungimea obiectului compus original., Copie superficială trebuie să aloce cel puțin dimensiunea `N „de tip” PyBoject* ” în memorie și buclă pentru a atribui.

3. Copia profundă este un algoritm de complexitate „o(NM) „unde” N „este lungimea obiectului compus original, iar” M ” este lungimea medie (în termeni de obiecte necompuse) a elementelor din compus.

4. Copia superficială și profundă pentru obiectele necompuse sunt aceleași, de exemplu, „int”, „float”, ” str ” etc.

5. „listă.copiere „este la fel ca folosind felie, adică” a ”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *