Junior — Middle
¿En qué se diferencia la copia profunda de objetos en Python de la copia superficial, y cuándo debería usarse?
sobes.tech AI
Respuesta de la IA
En Python, la copia superficial (shallow copy) crea un nuevo objeto, pero los objetos anidados dentro de él no se copian, sino que simplemente se pasan por referencia. La copia profunda (deep copy) crea un nuevo objeto y copia recursivamente todos los objetos anidados, creando una estructura completamente independiente.
Cuándo usar:
- La copia superficial es adecuada si los objetos anidados no cambiarán o si los cambios en los objetos anidados deben reflejarse en ambas copias.
- La copia profunda es necesaria cuando se requiere una copia completamente independiente del objeto con todos sus elementos anidados, para que los cambios en la copia no afecten al original.
Ejemplo:
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[0][0] = 100
print(original) # [[100, 2], [3, 4]] - el original cambió
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - el original no cambió
Por lo tanto, la elección entre copia superficial y profunda depende de los requisitos de independencia de la copia.