Cómo sacar el promedio de una lista en Python

Por el equipo de promedio.net · Actualizado el

Para sacar el promedio de una lista en Python, divide la suma de sus elementos entre la cantidad de elementos: sum(lista) / len(lista). Si prefieres una función con nombre, statistics.mean(lista) hace lo mismo y viene incluida en Python, sin instalar nada. Las dos fallan con una lista vacía, así que conviene revisarla antes.

Sintaxis

promedio = sum(lista) / len(lista)

import statistics
promedio = statistics.mean(lista)
FormaDevuelveCon lista vacíaCuándo usarla
sum(x) / len(x)Siempre floatZeroDivisionErrorScripts rápidos, sin importar nada
statistics.mean(x)El tipo de los datos si el resultado es exacto (int, Fraction, Decimal)StatisticsErrorCódigo legible, datos Decimal o Fraction
statistics.fmean(x)Siempre float, más rápidoStatisticsErrorListas largas de números de punto flotante

Paso a paso

  1. Reúne los números en una lista: datos = [8, 9.5, 7]. Todos deben ser números, no textos.
  2. Comprueba que la lista no esté vacía con if datos:.
  3. Suma con sum(datos) y cuenta con len(datos).
  4. Divide la suma entre la cantidad con / (no con //, que trunca el resultado).
  5. Redondea solo para mostrar el resultado: round(promedio, 2) o f"{promedio:.2f}".

Ejemplos resueltos

Ejemplo 1: promedio de calificaciones

calificaciones = [8, 9.5, 7, 10, 6.5]
promedio = sum(calificaciones) / len(calificaciones)
print(promedio)
8.2

La suma es 41 y hay 5 calificaciones: 41 / 5 = 8.2. Con statistics.mean(calificaciones) obtienes el mismo 8.2.

Ejemplo 2: números escritos con coma decimal

Si los datos llegan como texto desde un formulario o un archivo de México o España, primero conviértelos a float. Python solo entiende el punto decimal, así que cambia la coma por punto:

texto = "8,5 9 7,25 10"
numeros = [float(t.replace(",", ".")) for t in texto.split()]
print(numeros)
print(sum(numeros) / len(numeros))
[8.5, 9.0, 7.25, 10.0]
8.6875

Si el texto usa punto como separador de miles (1.250,50), quita primero los puntos y después cambia la coma.

Ejemplo 3: valores de un diccionario y huecos con None

Con un diccionario, promedia sus valores; con datos faltantes marcados como None, fíltralos antes:

ventas = {"enero": 12500, "febrero": 9800, "marzo": 14100}
print(sum(ventas.values()) / len(ventas))

datos = [7, 8, None, 9]
validos = [x for x in datos if x is not None]
print(sum(validos) / len(validos))
12133.333333333334
8.0

Observa que el segundo promedio divide entre 3, no entre 4: el dato que falta no cuenta como cero. Si en tu caso un faltante sí vale cero (una tarea no entregada), reemplázalo por 0 en lugar de quitarlo.

Una función reutilizable

def promedio(valores):
    if not valores:
        return None
    return sum(valores) / len(valores)

print(promedio([4, 5]))
print(promedio([]))
4.5
None

Devolver None obliga a quien llama a decidir qué hacer cuando no hay datos, en lugar de que el programa se detenga con una excepción.

Errores comunes

Si solo quieres comprobar un resultado sin programar, pega tus números en la calculadora de promedio de la portada, que también muestra la mediana y la moda.

Preguntas frecuentes

¿Python tiene una función average?

No como función integrada. Usa sum(lista) / len(lista), statistics.mean(lista) de la biblioteca estándar, o np.mean(lista) si ya trabajas con NumPy. np.average existe, pero su utilidad es el promedio ponderado.

¿Por qué statistics.mean([1, 2, 3]) devuelve 2 y no 2.0?

statistics.mean conserva el tipo de los datos cuando el resultado es exacto. Con enteros cuyo promedio es entero devuelve int; sum()/len() siempre devuelve float porque el operador / es división real.

Fuentes

  1. Python Software Foundation, documentación del módulo statistics. statistics.mean y StatisticsError. Consultado el 11 de noviembre de 2026.