Introducción a Python day07-- profundidad de una copia

profundidad de una copia

  • asignación directa: de hecho, el objeto referenciado

    a = [1,2,3]
    b = a
    print(a, b) # [1,2,3] [1,2,3]
    print(id(a),id(b)) # 4497919088 4497919088
    a = 5
    print(a, b) # 5 5
    print(id(a),id(b)) # 4498367856 4498367856

    b = a: referencias de asignación, a y b son el mismo objeto.

  • copia superficial (copia): objetos de copia niño en el interior del objeto padre, no se copiará el objeto.

a = {1:[1,2,3]}

b = a.copy()

a[2] = a.pop(1)

a[2].append(4)

print(a,b) # [2,[1, 2, 3, 4]], [1: [1, 2, 3, 4]]

b = a.copy (): copia superficial, a y b son un objeto separado, sub-objeto, o que apuntan a un objeto unificado (referencia).

  • copia profunda (deepcopy): módulo de copia método deepcopy, copia completa de los objetos de los padres y los objetos secundarios.

Profundidad necesaria para introducir las copias del módulo de copia:

import copy 

a = {1:[1,2,3]}

c = copy.deepcopy(a) 

a[2].append(5) 

print(a,c) # a, c ({2: [1, 2, 3, 5]}, {1: [1, 2, 4]})

copia superficial:

Dirección y una copia del objeto original del nuevo objeto no es la misma, pero la dirección y la dirección del objeto original en el elemento variable del nuevo objeto en el interior de los elementos variables (tales como listas, diccionarios) son los mismos, es decir copia superficial se trata de una copia superficial de una estructura de datos (elementos inmutables), un objeto en el elemento variable y no se copian a la nueva dirección a la que una profunda estructuras de datos, pero el objeto original y el punto a los mismos elementos en la variable una dirección, por lo que el objeto original o un nuevo objeto en el elemento variable de este cuando se hacen cambios, ambos objetos se cambian de forma simultánea.

copia en profundidad:

Para inmutable, (ahorro de espacio, lucha por el cambio no se puede hacer, se tendrá que abrir un nuevo espacio de memoria) con la dirección de memoria original.

Para la variable, para dar la abertura del recipiente hasta nueva dirección (el nuevo contenedor tendrá que distinguir entre tipo inmutable variables, si la variable tendrá que abrir un nuevo espacio de memoria contenedores, si el tipo es inmutable misma dirección de memoria compartida para obtener el original y así sucesivamente).

copia profunda es distinguir entre el tipo de datos de la variable de inmutable; dirección de memoria para el tipo de datos inmutables copia directa; para el tipo de datos variables y abra una memoria

Supongo que te gusta

Origin www.cnblogs.com/yding/p/12450901.html
Recomendado
Clasificación