Las listas en Python son la estructura de datos más usada del lenguaje. Dominarlas es imprescindible para aprobar entrevistas técnicas, construir algoritmos eficientes y escribir código profesional. En este artículo encontrarás 25 ejercicios de Python con listas resueltos, ordenados de menor a mayor dificultad, con solución explicada y código listo para ejecutar. Tanto si buscas ejercicios resueltos de Python para practicar desde cero como si ya tienes experiencia y quieres reforzar algoritmos avanzados, esta guía te cubre.

¿Por qué practicar con listas en Python?

Las listas permiten almacenar colecciones ordenadas y mutables de elementos. Son la base de algoritmos de búsqueda, ordenamiento y transformación de datos que aparecen en casi todos los proyectos reales. Practicar con ellas mejora tu capacidad de pensar algorítmicamente y te prepara para entrevistas técnicas en empresas de tecnología.

Ejercicios básicos con listas

Ejercicio 1 — Crear una lista de números

Crea una lista con los números del 1 al 10 e imprime cada elemento.

numeros = list(range(1, 11))
for n in numeros:
    print(n)

Ejercicio 2 — Sumar todos los elementos

Dada una lista de números, calcula su suma total sin usar sum().

numeros = [3, 7, 2, 9, 1]
total = 0
for n in numeros:
    total += n
print(f"Suma total: {total}")  # 22

Ejercicio 3 — Encontrar el máximo

Encuentra el valor máximo de una lista sin usar max().

numeros = [4, 8, 2, 15, 6]
maximo = numeros[0]
for n in numeros:
    if n > maximo:
        maximo = n
print(f"Maximo: {maximo}")  # 15

Ejercicio 4 — Invertir una lista

Invierte el orden de los elementos sin usar reverse().

lista = [1, 2, 3, 4, 5]
invertida = lista[::-1]
print(invertida)  # [5, 4, 3, 2, 1]

Ejercicio 5 — Eliminar duplicados

Dada una lista con elementos repetidos, devuelve otra sin duplicados conservando el orden.

con_duplicados = [1, 2, 2, 3, 4, 4, 5]
sin_duplicados = list(dict.fromkeys(con_duplicados))
print(sin_duplicados)  # [1, 2, 3, 4, 5]

Ejercicios intermedios con listas

Ejercicio 6 — Comprensión de listas

Usando list comprehension, genera una lista con los cuadrados de los números del 1 al 10.

cuadrados = [x**2 for x in range(1, 11)]
print(cuadrados)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Ejercicio 7 — Filtrar números pares

Filtra solo los números pares de una lista usando comprensión de listas.

numeros = list(range(1, 21))
pares = [n for n in numeros if n % 2 == 0]
print(pares)  # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Ejercicio 8 — Aplanar lista de listas

Convierte una lista anidada en una sola lista plana.

anidada = [[1, 2], [3, 4], [5, 6]]
plana = [elem for sublista in anidada for elem in sublista]
print(plana)  # [1, 2, 3, 4, 5, 6]

Ejercicio 9 — Contar ocurrencias

Cuenta cuántas veces aparece cada elemento en una lista usando un diccionario.

colores = ["rojo", "azul", "rojo", "verde", "azul", "rojo"]
conteo = {}
for color in colores:
    conteo[color] = conteo.get(color, 0) + 1
print(conteo)  # {"rojo": 3, "azul": 2, "verde": 1}

Ejercicio 10 — Intercalar dos listas

Dados dos listas, crea una tercera alternando sus elementos usando zip.

a = [1, 3, 5]
b = [2, 4, 6]
intercalada = [elem for par in zip(a, b) for elem in par]
print(intercalada)  # [1, 2, 3, 4, 5, 6]

Ejercicios avanzados con listas

Ejercicio 11 — Ordenamiento burbuja

Implementa el algoritmo Bubble Sort sobre una lista sin usar sorted().

def burbuja(lista):
    n = len(lista)
    for i in range(n):
        for j in range(0, n - i - 1):
            if lista[j] > lista[j + 1]:
                lista[j], lista[j + 1] = lista[j + 1], lista[j]
    return lista

print(burbuja([64, 34, 25, 12, 22]))  # [12, 22, 25, 34, 64]

Ejercicio 12 — Matriz transpuesta

Calcula la transpuesta de una matriz representada como lista de listas.

matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transpuesta = [[matriz[j][i] for j in range(len(matriz))] for i in range(len(matriz[0]))]
print(transpuesta)  # [[1,4,7],[2,5,8],[3,6,9]]

Ejercicio 13 — Rotación de lista

Rota una lista k posiciones hacia la derecha de forma eficiente.

def rotar(lista, k):
    k = k % len(lista)
    return lista[-k:] + lista[:-k]

print(rotar([1, 2, 3, 4, 5], 2))  # [4, 5, 1, 2, 3]

Ejercicio 14 — Mayor diferencia

Encuentra la mayor diferencia posible entre dos elementos de una lista.

numeros = [10, 3, 5, 6, 20, 1]
diferencia = max(numeros) - min(numeros)
print(f"Mayor diferencia: {diferencia}")  # 19

Ejercicio 15 — Subsecuencia consecutiva más larga

Encuentra la longitud de la racha consecutiva más larga de elementos iguales.

lista = [1, 1, 2, 2, 2, 3, 1, 1]
max_racha = cuenta = 1
for i in range(1, len(lista)):
    if lista[i] == lista[i - 1]:
        cuenta += 1
        max_racha = max(max_racha, cuenta)
    else:
        cuenta = 1
print(f"Racha mas larga: {max_racha}")  # 3

10 ejercicios adicionales para practicar

Consolida lo aprendido con estos ejercicios adicionales de aprender Python practicando:

  1. Calcula la mediana de una lista sin usar librerías externas.
  2. Genera una lista de números primos hasta N usando la criba de Eratóstenes.
  3. Implementa la búsqueda lineal sin usar el método index().
  4. Divide una lista en sublistas de tamaño N (chunks).
  5. Une dos listas eliminando los duplicados y manteniendo el orden.
  6. Encuentra los elementos comunes entre dos listas sin usar conjuntos.
  7. Comprueba si una lista de caracteres es palíndromo.
  8. Ordena una lista de tuplas por el segundo elemento.
  9. Elimina todos los valores None y False de una lista.
  10. Genera todas las permutaciones de una lista de 3 elementos.

Preguntas frecuentes sobre listas en Python

¿Cuál es la diferencia entre una lista y una tupla en Python?

La diferencia principal es la mutabilidad: las listas son mutables (puedes añadir, eliminar o modificar elementos) y se definen con corchetes []. Las tuplas son inmutables (no se pueden cambiar una vez creadas) y se definen con paréntesis (). Usa listas cuando los datos cambian y tuplas para datos fijos como coordenadas o configuración.

¿Qué es la comprensión de listas (list comprehension) en Python?

La comprensión de listas es una sintaxis compacta para crear listas a partir de iterables. La forma básica es [expresion for elemento in iterable if condicion]. Por ejemplo, [x**2 for x in range(10) if x % 2 == 0] genera los cuadrados de los pares del 0 al 9. Es más rápida y legible que un bucle for equivalente y es una de las características más valoradas de Python.

¿Cómo ordenar una lista en Python?

Tienes dos opciones nativas: lista.sort() ordena la lista en su lugar modificando el original, y sorted(lista) devuelve una nueva lista ordenada sin tocar la original. Ambas aceptan reverse=True para orden descendente y el parámetro key= para definir el criterio. Por ejemplo, sorted(palabras, key=len) ordena por longitud de palabra.

¿Cómo eliminar elementos duplicados de una lista manteniendo el orden?

La forma más sencilla en Python 3.7+ es list(dict.fromkeys(mi_lista)), que elimina duplicados preservando el orden de aparición. Si el orden no importa, set() es más rápido. Para listas de objetos complejos, puedes usar comprensión de listas con un conjunto auxiliar: visto = set(); [visto.add(x) or x for x in lista if x not in visto].

¿Cuándo debo usar listas y cuándo otros tipos de colecciones?

Usa listas para colecciones ordenadas y modificables. Usa tuplas para datos inmutables que no cambiarán. Usa conjuntos (set) cuando necesites unicidad y no te importe el orden. Usa diccionarios (dict) para pares clave-valor. Para operaciones matemáticas sobre grandes volúmenes de datos numéricos, considera arrays de NumPy que son mucho más eficientes.

Conclusión

Practicar con listas es el camino más directo para desarrollar fluidez en Python. Con estos 25 ejercicios has trabajado desde operaciones básicas hasta algoritmos como Bubble Sort y rotación de listas. El siguiente paso es combinar lo aprendido: consulta nuestros ejercicios generales de Python, los ejercicios con funciones y los patrones de diseño en Python.