Aprende cómo reduce() en Python puede transformar tus datos en un solo paso

| Última modificación: 27 de noviembre de 2024 | Tiempo de Lectura: 3 minutos
Premios Blog KeepCoding 2025

Full Stack Developer y Responsable de Formación base en KeepCoding.

El reduce() en Python es una herramienta muy versátil que te ayuda a simplificar el proceso de convertir múltiples valores en uno solo. Si bien es menos conocida que otras funciones como map() o filter(), tiene una capacidad para manejar tareas complejas en un solo paso. Veamos cómo funciona y qué provecho puedes sacar de ella.

reduce() en python

¿Qué es reduce() en Python?

reduce() es una función del módulo functools que aplica de forma acumulativa una función a los elementos de un iterable, ya sean listas, tuplas o cualquier otro elemento, reduciéndolos a un solo valor. Funciona tomando los dos primeros elementos de la secuencia, aplicando una función definida, y luego reutilizando el resultado para combinarlo con el siguiente elemento. Este proceso continúa hasta que solo queda un valor final.

La sintaxis de reduce() funciona del siguiente modo: solo necesitas importar la función desde functools y luego pasarle una función y un iterable:

from functools import reduce
reduce(función, iterable)
  • función: Es una función que toma dos argumentos y devuelve un valor.
  • iterable: El conjunto de datos a procesar, como una lista o tupla.

La salida será un único valor que representa el resultado de aplicar la función de manera acumulativa.

Veamos algunos ejemplos

  • Vamos a sumar los elementos de una lista usando reduce():
from functools import reduce

numeros = [1, 2, 3, 4, 5]

resultado = reduce(lambda a, b: a + b, numeros)
print(resultado) # Salida: 15

En este caso, la función lambda suma dos números a la vez hasta reducir la lista completa a un solo valor: 15.

  • Ahora vamos a encontrar el máximo en una lista:
from functools import reduce

numeros = [3, 7, 2, 8, 4]

maximo = reduce(lambda a, b: a if a > b else b, numeros)
print(maximo) # Salida: 8
  • Vamos a multiplicar todos los elementos de una lista:
from functools import reduce

numeros = [2, 3, 4]

producto = reduce(lambda a, b: a * b, numeros)
print(producto) # Salida: 24
  • Vamos a concatenar cadenas:
from functools import reduce

palabras = ["Python", "es", "genial"]

frase = reduce(lambda a, b: a + " " + b, palabras)
print(frase) # Salida: "Python es genial"
  • Usaremos operadores para mayor claridad: En lugar de usar funciones lambda, también puedes combinar reduce() con el módulo operator para mejorar la legibilidad:
from functools import reduce
import operator

numeros = [1, 2, 3, 4]

suma = reduce(operator.add, numeros)
print(suma) # Salida: 10

¿Qué es mejor, el reduce() o los bucles tradicionales?

Imagina que necesitas multiplicar todos los elementos de una lista. Con un bucle tradicional, el código sería algo así:

numeros = [2, 3, 4]
producto = 1

for num in numeros:
producto *= num

print(producto) # Salida: 24

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Aunque funcional, este enfoque requiere más líneas de código y es menos legible. Con reduce():

from functools import reduce

producto = reduce(lambda a, b: a * b, [2, 3, 4])
print(producto) # Salida: 24

El resultado es el mismo, pero el código es mucho más compacto y claro.

reduce() vs accumulate()

Aunque ambas funciones realizan tareas similares, hay diferencias clave:

  • reduce() devuelve solo el resultado final.
  • accumulate() devuelve un iterador con todos los resultados intermedios.

Por ejemplo, sumar los elementos de una lista con accumulate():

from itertools import accumulate

numeros = [1, 2, 3, 4]

resultado = list(accumulate(numeros, lambda x, y: x + y))
print(resultado) # Salida: [1, 3, 6, 10]

En este caso, puedes ver cómo se construye el resultado paso a paso.

Si te interesa el campo de la tecnología y quieres iniciar en su aprendizaje, te dejamos disponible el bootcamp de programación desde cero, con el cual aprenderás todos los fundamentos teóricos y prácticos para iniciar tu vida en el campo laboral más destacado del mercado, creando tus primeros programas y entendiendo la estructura de los programas. ¡Únete ahora a la mejor comunidad!

Noticias recientes del mundo tech

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Clases en Directo | Acceso a +600 empresas | 98,51% empleabilidad

Fórmate con planes adaptados a tus objetivos y logra resultados en tiempo récord.
KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.