Repaso
English
PythonIntermedioPY-18

¿Qué imprime esto?

import copy
a = [[1], [2]]
b = copy.copy(a)
b[0].append(9)
print(a)

Opciones

  1. [[1], [2]]
  2. [[1, 9], [2]] (Opción correcta)
  3. [[1], [2], 9]
  4. [[9], [2]]

Respuesta

[[1, 9], [2]]

Por qué

copy.copy crea una lista exterior nueva, pero los elementos de dentro son las MISMAS listas internas, no copias.

Así que b[0] y a[0] son una sola lista; lo que le añades aparece en ambas.

copy.deepcopy copia todo de forma recursiva, así que no se comparte nada.

Recuerda

Shallow copy = contenedor nuevo, mismo contenido.

Términos clave

Practica esta pregunta en Repaso