En Python, algunos objetos pueden cambiar después de ser creados y otros no. Esta diferencia — mutabilidad vs inmutabilidad — explica por qué existen tanto las listas como las tuplas, y por qué importa entenderlas.
¿Qué es la mutabilidad?
Un objeto mutable puede cambiar su contenido después de ser creado. Un objeto inmutable no puede — si necesitas un valor diferente, debes crear un objeto nuevo.
Listas: mutables
Las listas se pueden modificar:
frutas = ["manzana", "pera", "uva"]
frutas[0] = "naranja" # cambiar elemento
frutas.append("kiwi") # agregar elemento
frutas.remove("pera") # eliminar elemento
print(frutas) # ['naranja', 'uva', 'kiwi']
Tuplas: inmutables
Las tuplas usan paréntesis () y no se pueden modificar:
coordenadas = (40.7128, -74.0060)
coordenadas[0] = 0 # TypeError: 'tuple' object does not support item assignment
Una vez creada, la tupla no cambia.
¿Para qué sirve cada una?
| Lista | Tupla | |
|---|---|---|
| Sintaxis | [1, 2, 3] | (1, 2, 3) |
| Mutable | Sí | No |
| Uso | Colecciones que cambian | Datos fijos |
| Ejemplo | Lista de tareas | Coordenadas GPS, fecha |
Usa tuplas cuando los datos no deben cambiar — son más rápidas que las listas y comunican mejor la intención.
Strings también son inmutables
nombre = "ana"
nombre[0] = "A" # TypeError — los strings no se pueden modificar
Para "modificar" un string, creas uno nuevo:
nombre = "ana"
nombre = nombre.capitalize() # devuelve un nuevo string
print(nombre) # Ana
El problema de las referencias
Esto sorprende a muchos principiantes:
lista_a = [1, 2, 3]
lista_b = lista_a # ambas apuntan al mismo objeto
lista_b.append(4)
print(lista_a) # [1, 2, 3, 4] — también cambió!
lista_b = lista_a no crea una copia — ambas variables apuntan al mismo objeto en memoria. Para hacer una copia real:
lista_b = lista_a.copy() # copia superficial
lista_b = lista_a[:] # otra forma de copiar
Ejemplo: cuándo elegir tupla
# Los meses del año no cambian → tupla
MESES = ("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
# Las tareas del usuario cambian → lista
tareas = ["Estudiar", "Hacer ejercicio"]
tareas.append("Cocinar")
Errores frecuentes
Copiar una lista con =: nueva = original no es una copia — es una referencia al mismo objeto. Usa .copy() o [:].
Intentar modificar una tupla: Si necesitas modificar los datos, usa una lista. Si los datos son fijos, usa una tupla. Elegir el tipo correcto desde el principio evita errores.
Strings inmutables: Si esperas que texto[0] = "X" funcione, no lo hará. Los strings son inmutables igual que las tuplas.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de Python y recibes corrección inmediata de IA.
Comenzar gratis →