PythonIntermedio25 oct 2025

La Matriz Espejo: Cuando tus listas tienen un vínculo telepático 🧘‍♀️

snippet.python
matrix = [[0, 0, 0]] * 3
matrix[0][1] = 99
print(matrix)

¿Qué crees que imprime?

Salida Esperada

[[0, 99, 0], [0, 0, 0], [0, 0, 0]]

⚠️ Salida Real

[[0, 99, 0], [0, 99, 0], [0, 99, 0]]

¿Por qué pasa esto?

¡Vaya, vaya! Parece que tu matriz no es una matriz de listas independientes, ¡sino un **claustro de clones psíquicos**! 🤯 Cuando haces `[[0, 0, 0]] * 3`, Python no crea tres listas `[0, 0, 0]` nuevas y distintas. En su lugar, es como si hicieras una fotocopia de la *referencia* a la **misma lista interna** `[0, 0, 0]` ¡tres veces! Es decir, tienes tres "punteros" (aunque Python no tenga punteros explícitos, la metáfora ayuda) apuntando al mismo objeto lista en memoria. Así que, al modificar `matrix[0][1]`, en realidad estás modificando el **único objeto lista** al que todas las referencias apuntan. ¡Es como cambiar la ropa de un personaje y ver que todos sus clones también la cambian telepáticamente! 👕✨ La solución es crear cada lista interna de forma independiente, por ejemplo, con una **list comprehension**: `matrix = [[0, 0, 0] for _ in range(3)]`. ¡Así cada lista es su propio ser, libre de vínculos telepáticos!

Conceptos relacionados

referencesmutable-objectslist-multiplication