Contenido del curso

Fundamentos de Programación y Python

Programación Orientada a Objetos en Python

Copiar listas en Python con slicing

Resumen

Copiar una lista en Python no es tan simple como escribir B = A. Si lo haces así, ambas variables apuntan al mismo espacio en memoria y cualquier cambio en una se refleja en la otra. Para evitar ese efecto colateral, existe el slicing, una técnica clave para clonar listas de forma independiente.

Por qué B = A no copia realmente la lista en Python

Cuando asignas una lista con el signo igual, Python no duplica los datos: solo crea una segunda etiqueta que apunta al mismo lugar en memoria. Eso significa que A y B son, en la práctica, la misma lista con dos nombres distintos.

Mira este ejemplo. Tienes una lista de números del uno al cinco almacenada en A, y luego haces B = A:

python A = [1, 2, 3, 4, 5] B = A print(A) print(B)

Ambas listas se imprimen idénticas. Hasta ahí, todo bien. Pero si ahora eliminas la posición cero de A, ese cambio aparece también en B. ¿Por qué? Porque las dos variables comparten dirección.

¿Por qué se modifican ambas listas si solo cambio una? Porque al asignar B = A, ambas variables apuntan al mismo objeto en memoria. No son copias, son referencias al mismo dato.

Cómo verificar que dos variables apuntan al mismo espacio en memoria

Python tiene una función llamada id() que te devuelve la dirección en memoria de un objeto. Si la usas con A y con B, obtienes el mismo número:

python print(id(A)) print(id(B))

Ese resultado confirma lo que está pasando: una sola lista, dos etiquetas. Por eso, cualquier modificación que hagas en una se refleja automáticamente en la otra.

Cómo usar slicing para copiar una lista en Python

La solución es el slicing. En lugar de asignar la variable directamente, le pides a Python que tome todos los elementos de la lista original, desde la posición cero hasta el final, y los guarde en un nuevo espacio de memoria.

La sintaxis es esta:

python C = A[0:]

Ahora C contiene los mismos valores que A, pero vive en otra dirección. Si compruebas el id de C, verás que es distinto al de A. Y si modificas A, por ejemplo agregando el número seis con A.append(6), esa modificación aparecerá en B (porque sigue compartiendo memoria con A), pero no en C.

python A.append(6) print(A) print(B) print(C)

El resultado lo deja clarísimo: A y B crecen juntas, C se mantiene tal como la copiaste.

¿Qué hace el slicing al copiar una lista? Crea una nueva lista en una dirección de memoria distinta con los mismos elementos. Así evitas que los cambios en el original afecten a la copia.

Listas con tipos mixtos: una ventaja de Python

A diferencia de otros lenguajes de programación, Python te deja almacenar diferentes clases dentro de una misma colección. Puedes tener números, cadenas, booleanos y hasta otras listas conviviendo en la misma estructura. Esa flexibilidad la vas a aprovechar mucho en el campo laboral, sobre todo cuando manejas datos heterogéneos que vienen de APIs, archivos o bases de datos.

La próxima vez que necesites duplicar una lista, recuerda: B = A te da una referencia, C = A[0:] te da una copia real. Cuéntame en los comentarios si ya te habías topado con este comportamiento al programar.