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