Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Agregación Python: Listas

Una aplicación común de los bucles con listas es la agregación. La agregación se refiere a cualquier cálculo que se basa en un conjunto completo de datos, por ejemplo, buscar el valor máximo, el promedio, la suma, etc. El proceso de agregación no requiere que el programador conozca una nueva sintaxis, pero sí afecta el algoritmo para resolver problemas.

Comenzaremos con la búsqueda del valor máximo:

def calculate_max(coll):
  # Si la colección está vacía, no puede tener un valor máximo
  # En situaciones como esta, es costumbre devolver None
  # Este es un ejemplo clásico del uso de la idiomática guard expression
  if coll == []:
    return None

  # Comenzamos a comparar los elementos con el primer elemento
  max = coll[0]

  # Comenzamos la iteración desde el segundo elemento
  for i in range(1, len(coll)):
    current = coll[i]
    # Si el elemento actual es mayor que el máximo,
    # entonces se convierte en el máximo
    if current > max:
      max = current

  # No olvidemos devolver el número máximo
  return max

print(calculate_max([])) # => None
print(calculate_max([3, 2, -10, 38, 0])) #=> 38

En este ejemplo de agregación vemos un cálculo. Incluye la comparación de todos los elementos para encontrar uno que se convertirá en el resultado de esta operación.

Ten en cuenta que el valor inicial de max es el primer elemento, no 0 o cualquier otro número. Podría resultar que todos los números en la lista son menores que 0, y luego obtendríamos una respuesta incorrecta.

Elemento neutro

Ahora examinemos la búsqueda de la suma:

def calculate_sum(coll):
    # Valor inicial de la suma
    sum = 0
    for i in range(len(coll)):
        # Sumamos todos los elementos uno por uno
        sum += coll[i]

    return sum

# La suma de los elementos siempre devuelve algún número
# Si la lista está vacía, la suma de sus elementos es cero
print(calculate_sum([]))  # => 0

print(calculate_sum([3, 2, -10, 38, 0]))  # => 33
# Proceso de cálculo
sum = 0
sum = sum + 3  # 3
sum = sum + 2  # 5
sum = sum + -10  # -5
sum = sum + 38  # 33
sum = sum + 0  # 33

El algoritmo para buscar la suma es significativamente más simple, pero tiene un par de matices importantes.

¿A cuánto asciende la suma de los elementos de una lista vacía? Desde el punto de vista matemático, esa suma es 0, lo que coincide con el sentido común. Si no tenemos manzanas, significa que tenemos 0 manzanas. En otras palabras, la cantidad de manzanas es cero. Las funciones en la programación funcionan de la misma manera.

El segundo punto tiene que ver con el elemento inicial de la suma. La variable sum tiene un valor inicial de 0. ¿Por qué establecer un valor en absoluto? Cualquier operación repetitiva comienza con algún valor. No puedes simplemente declarar una variable y comenzar a trabajar con ella dentro de un bucle. Esto llevará a un resultado incorrecto:

  # En Python no podemos crear una variable sin asignarle algún valor
  # Usamos None como "ausencia de valor"
  sum = None

  # Primera iteración del bucle
  sum = sum + 2

Como resultado de dicha llamada, habrá un error 🛑 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' adentro. Este error ocurre debido a un intento de sumar 2 y None. Entonces, necesitamos algún valor en cualquier caso. En el código anterior, se eligió 0 porque todas las otras opciones conducirán a un resultado incorrecto. Si el valor inicial es 1, el resultado será una unidad mayor de lo necesario.

En matemáticas, existe el concepto de elemento neutro de la operación binaria. Este es el elemento que no cambia el resultado de su uso. En otras palabras, sumar cualquier número con cero siempre da el mismo número. Luego cualquier suma, por ejemplo, 3 + 2 + 8, se puede calcular como 0 + 3 + 2 + 8, lo que utilizamos en nuestro código.

El elemento neutro es una parte importante de cualquier operación de agregación. Con él comienza el propio proceso de agregación. En el caso de la suma, es 0, en caso de multiplicación, 1. Incluso si la concatenación tiene un elemento neutro, es una cadena vacía: '' + 'one' será 'one'.

La agregación no siempre significa que una colección de elementos se reduce a algún valor simple. El resultado de la agregación puede ser incluso una estructura compleja, como una lista. Ejemplos de este tipo se encuentran con frecuencia en la vida real. El ejemplo más sencillo es una lista de palabras únicas en un texto.

Conclusiones

  • La agregación se refiere a cálculos que involucran un conjunto completo de datos, como encontrar el valor máximo, el promedio, la suma, entre otros.
  • La agregación puede usar un elemento neutro. No cambia el resultado de la operación. El elemento neutro de la operación de suma es 0. Para la multiplicación, 1. Para la concatenación de cadenas: la cadena vacía ''.
  • El resultado de la agregación puede ser no solo un valor simple, sino también una estructura compleja, como una lista de palabras únicas en un texto.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY