asignación vs. copia superficial vs. copia profunda en Python


copia superficial

una copia superficial construye un nuevo objeto compuesto y luego (en la medida de lo posible) inserta referencias a los objetos encontrados en el original.

Tenemos tres maneras diferentes para crear una copia superficial:

Aquí, todas estas listas contienen los mismos valores que en la lista original:

>>> print(nums == m1 == m2 == m3)
True

sin Embargo, la dirección de memoria de cada uno es diferente.,

esto significa que esta vez, el objeto de cada lista tiene su propia dirección de memoria independiente.

Ahora pasamos a la parte más interesante. Si la lista original es un objeto compuesto (por ejemplo, una lista de listas), después de una copia superficial, los nuevos elementos de Lista siguen haciendo referencia a los elementos originales.

por lo tanto, si modifica los elementos mutables como las listas, los cambios se reflejarán en los elementos originales., Veamos el siguiente ejemplo para obtener una mejor comprensión:

como puede ver en el ejemplo anterior, mientras modificamos los elementos de la lista interna en la nueva lista, también se actualiza en la lista original, porqueayb todavía apuntan a la misma dirección de memoria (lista original).

Así, la nueva lista de b tiene su propia dirección de memoria pero sus elementos no., Esto se debe a que, en shallow copy, en lugar de copiar los elementos de la lista al nuevo objeto, simplemente copia las referencias a sus direcciones de memoria.

por lo Tanto, mientras estamos haciendo cambios en el objeto original, se refleja en los objetos copiados y viceversa.

Esta es una característica de una copia superficial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir a la barra de herramientas