Python Cópia: superficiais e Profundas

Em python temos chamado “deep copy’ e ‘cópia superficial’, por exemplo:

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

A diferença entre superficial e profundo, a cópia só é relevante para objetos compostos (objetos que contêm outros objetos, como `lista`, `dict`, `set`, `tuple` e `bytearray` ou instâncias de classe).

– uma cópia rasa constrói um novo objeto composto e então (para a extensão possível de

) insere *os mesmos objetos* nele que o original

contém.,

– uma cópia profunda constrói um novo objeto composto e então, recursivamente,

insere *copia* nele dos objetos encontrados no original.

notas:

1. Em vez de “list”, “dict”, ” set ” e “bytearray”, ” copy.copy ‘é equivalente a’ list.entendido, dict.entendido.copy ‘ e ‘ bytearray.copy’, respectivamente.

isto é, todo o método de classe `copy` De `list`, `dict`, `set` e `bytearray` são cópias rasas.2. Cópia rasa é um algoritmo de complexidade` O (N)` onde `N` é o comprimento do objeto composto original., Cópia rasa precisa alocar pelo menos o tamanho de `N` de `PyBoject*` tipo na memória e loop para atribuir.3. Deep copy é um algoritmo de complexidade ‘O (NM) `onde` N `é o comprimento do objeto composto original, e` M’ é o comprimento médio (em termos de objetos não compostos) dos elementos do composto.4. A cópia rasa e profunda para objetos não compostos são os mesmos, por exemplo,` int`,` float`,` str ‘ etc.5. `lista.copy é o mesmo que usar slice, ou seja, ” a ”

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *