certmundo.
es‑mx

7 min de lectura

Listas y tuplas

Lección 8: Listas y tuplas

Imagina que trabajas en una startup de tecnología en Ciudad de México y tu equipo necesita registrar los nombres de todos los postulantes a una vacante de desarrollador. Podrías crear una variable por persona —postulante1, postulante2, postulante3— pero eso sería caótico desde el postulante número cinco. Las listas existen precisamente para solucionar este problema: te permiten agrupar múltiples valores en una sola variable, ordenarlos, modificarlos y recorrerlos con facilidad.

¿Qué es una lista?

Una lista es una colección ordenada y mutable de elementos. "Ordenada" significa que cada elemento tiene una posición fija. "Mutable" significa que puedes cambiar su contenido después de crearla. En Python, una lista se define con corchetes [] y sus elementos se separan con comas.

postulantes = ["Ana Reyes", "Carlos Mendoza", "Sofía Torres"]
salarios_oferta = [18000, 22000, 25000, 30000]  # En MXN mensuales
mixta = ["Python", 3, True, 99.5]              # Puedes mezclar tipos de datos

Una lista puede contener números, cadenas de texto, booleanos o incluso otras listas. Esta flexibilidad la convierte en una de las herramientas más versátiles del lenguaje.

Indexación: accediendo a elementos individuales

Cada elemento de una lista tiene un índice que indica su posición. Python empieza a contar desde cero, así que el primer elemento está en el índice 0, el segundo en el 1, y así sucesivamente. También puedes usar índices negativos para acceder a los elementos desde el final: -1 es el último, -2 el penúltimo, etcétera.

postulantes = ["Ana Reyes", "Carlos Mendoza", "Sofía Torres", "Luis Garza"]

print(postulantes[0])   # Ana Reyes (primer elemento)
print(postulantes[2])   # Sofía Torres (tercer elemento)
print(postulantes[-1])  # Luis Garza (último elemento)

# Modificar un elemento por su índice
postulantes[1] = "Carlos Medina"
print(postulantes)      # ["Ana Reyes", "Carlos Medina", "Sofía Torres", "Luis Garza"]

Intentar acceder a un índice que no existe —por ejemplo, postulantes[10] en una lista de cuatro elementos— generará un error IndexError. Es uno de los errores más comunes entre quienes empiezan, así que tenlo presente.

Slicing: obteniendo porciones de una lista

El slicing (rebanado) te permite extraer un subconjunto de elementos usando la sintaxis lista[inicio:fin]. El elemento en la posición inicio se incluye, pero el de la posición fin no. Si omites el inicio, Python asume que es el principio de la lista; si omites el fin, llega hasta el último elemento.

candidatos = ["Ana", "Carlos", "Sofía", "Luis", "Paola", "Diego"]

primera_mitad = candidatos[0:3]   # ["Ana", "Carlos", "Sofía"]
segunda_mitad = candidatos[3:]    # ["Luis", "Paola", "Diego"]
ultimos_dos   = candidatos[-2:]   # ["Paola", "Diego"]
todos         = candidatos[:]     # Copia completa de la lista

El slicing es especialmente útil cuando trabajas con datos reales: imagina que tienes una lista de cien freelancers registrados en una plataforma de trabajo remoto y necesitas procesar solo los primeros veinte. Con freelancers[:20] lo resuelves en un segundo.

Métodos esenciales de las listas

Las listas vienen equipadas con métodos integrados que te permiten manipularlas sin esfuerzo. Aquí están los más importantes que usarás en el día a día.

append(elemento) agrega un elemento al final de la lista. Es el método más usado para construir listas de forma dinámica, por ejemplo al ir recibiendo registros de un formulario.

remove(elemento) elimina la primera aparición del elemento especificado. Si el elemento no existe, Python lanza un ValueError.

sort() ordena la lista en su lugar, de menor a mayor (para números) o de A a Z (para cadenas de texto). Si quieres el orden inverso, usa sort(reverse=True).

len(lista) no es un método sino una función integrada, pero merece mención aquí: te devuelve el número de elementos que contiene la lista.

Otros métodos útiles son insert(índice, elemento) para agregar en una posición específica, pop() para eliminar y retornar el último elemento, y count(elemento) para contar cuántas veces aparece un valor.

# Gestión de ofertas de trabajo remoto en pesos mexicanos
ofertas_sueldo = [28000, 22000, 35000, 19000, 42000]

ofertas_sueldo.append(31000)          # Agregar una nueva oferta
print(len(ofertas_sueldo))            # 6 ofertas en total

ofertas_sueldo.remove(19000)          # Eliminar la oferta más baja
ofertas_sueldo.sort()                 # Ordenar de menor a mayor
print(ofertas_sueldo)                 # [22000, 28000, 31000, 35000, 42000]

promedio = sum(ofertas_sueldo) / len(ofertas_sueldo)
print(f"Sueldo promedio: ${promedio:,.0f} MXN")  # $31,600 MXN

Con este pequeño script ya tienes la base para construir reportes de análisis salarial, algo muy valorado en equipos de Recursos Humanos o en plataformas como OCC Mundial o Computrabajo.

Tuplas: cuando los datos no deben cambiar

Una tupla es, en esencia, una lista inmutable. Se define con paréntesis () en lugar de corchetes, y una vez creada, sus elementos no se pueden modificar, agregar ni eliminar. Si intentas hacerlo, Python te lanzará un TypeError.

coordenadas_cdmx = (19.4326, -99.1332)   # Latitud y longitud de CDMX
moneda = ("MXN", "Peso mexicano", "$")

print(coordenadas_cdmx[0])   # 19.4326
# coordenadas_cdmx[0] = 20   # Esto genera un error: las tuplas son inmutables

¿Por qué usar tuplas si las listas son más flexibles? Hay varias razones prácticas. Primero, la inmutabilidad es una garantía: si pasas una tupla a otra parte de tu programa, sabes con certeza que nadie la va a modificar por accidente. Segundo, las tuplas ocupan menos memoria y son ligeramente más rápidas que las listas, lo que importa cuando procesas millones de registros. Tercero, las tuplas pueden usarse como claves en diccionarios (que veremos más adelante), algo que las listas no permiten.

Listas vs. tuplas: ¿cuándo usar cada una?

La regla general es simple: usa una lista cuando la colección de datos va a cambiar con el tiempo —un carrito de compras, una lista de tareas pendientes, un registro de transacciones. Usa una tupla cuando los datos son constantes y no deben modificarse —las coordenadas de una sucursal, los códigos de área de una ciudad, la configuración fija de una aplicación.

En el contexto del desarrollo de software para empresas mexicanas o startups LATAM, las listas son perfectas para manejar catálogos de productos que se actualizan constantemente en un e-commerce, mientras que las tuplas son ideales para almacenar información fija como los estados de la República Mexicana o los tipos de cambio de referencia del día (que se consultan pero no se alteran en el código).

Otra diferencia importante: como las listas son mutables, Python las trata con más cuidado en memoria. Si asignas una lista a otra variable, ambas apuntan al mismo objeto. Con las tuplas esto rara vez genera problemas porque no puedes modificarlas de todas formas.

Operaciones comunes que funcionan en ambas

Tanto listas como tuplas comparten varias operaciones: puedes usar in para verificar si un elemento existe, len() para contar sus elementos, y la función list() o tuple() para convertir una en la otra cuando lo necesites.

estados_norte = ("Chihuahua", "Sonora", "Coahuila", "Nuevo León", "Tamaulipas")

print("Sonora" in estados_norte)       # True
print(len(estados_norte))             # 5

# Convertir a lista para poder modificar, luego volver a tupla
estados_lista = list(estados_norte)
estados_lista.append("Baja California")
estados_norte_actualizado = tuple(estados_lista)
print(estados_norte_actualizado)

Este patrón de convertir, modificar y reconvertir es muy común en código del mundo real, especialmente cuando recibes datos de una API externa que te llegan como tupla pero necesitas procesarlos.


Ya tienes en tu caja de herramientas dos estructuras de datos fundamentales. Con listas y tuplas puedes representar prácticamente cualquier colección de información, desde un catálogo de productos en una tienda en línea hasta los resultados de una encuesta de satisfacción laboral. Dominarlas bien te pone un paso adelante en cualquier entrevista técnica o proyecto real.

Lo que viene a continuación

En la Lección 9 vas a aprender sobre Funciones, uno de los conceptos más transformadores de la programación. Las funciones te permiten encapsular bloques de código reutilizables, darles un nombre y llamarlos cuantas veces necesites desde cualquier parte de tu programa. Así dejas de repetir las mismas instrucciones una y otra vez, y tu código se vuelve más limpio, más fácil de mantener y más profesional. Si alguna vez te has preguntado cómo los grandes proyectos de software logran mantenerse organizados, la respuesta empieza en las funciones.

Puntos clave

  • Las listas son colecciones ordenadas y mutables que se crean con []; permiten agregar, eliminar y modificar elementos usando métodos como append(), remove() y sort().
  • El indexado (desde 0) y el slicing (lista[inicio:fin]) te dan acceso preciso a elementos individuales o a porciones completas de una lista.
  • Las tuplas se crean con () y son inmutables: úsalas cuando los datos no deben cambiar, ya que ofrecen mayor seguridad, menor uso de memoria y mejor rendimiento que las listas.

Comparte esta lección:

Listas y tuplas | Curso de Python Gratis para Principiantes — De Cero a tu Primer Programa | Certmundo