Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel
Listas Avanzadas
Mapas, Filtro, Reducción
Objetivo
Termina de mezclar y producir helado utilizando Maps, Filter y Reduce.
Algunos de los sabores de helado están bajos o vacíos, pero tenemos suficientes materiales para compensar y preparar más helado. Para ello, debes utilizar Map, una herramienta poderosa que te permite reducir la cantidad de código que necesitas escribir condensando bucles y estructuras condicionales. Las funciones Filter y Reduce son complementarias a la función Map y le otorgan la versatilidad necesaria a tu programación.
Para comenzar, necesitas importar Reduce de la biblioteca functools para poder utilizar la función, añadiendo este código al inicio de tu programa: from functools import reduce. Las funciones Map y Filter están integradas en Python y no necesitan ser importadas.
Primero, necesitas recoger algunos ingredientes del congelador walk-in, caminar hacia la marca X dorada, enfrentarte a la puerta y abrirla usando la función open(). Recoge todos los frascos de "cream" en el congelador y luego camina hacia la marca X iluminada sobre la alfombra verde.
En el área encontrarás tres constantes de lista llamadas: vanilla, strawberry y chocolate. Cada constante tiene una combinación de ingredientes que constituyen el sabor del helado. En la marca X verde, verifica el contenido de la constante de lista strawberry. Primero, usa la función place() para depositar el "cream" que recogiste anteriormente y utiliza la función speak() para verificar el contenido de la constante de lista strawberry.
Una vez verificado, es hora de usar la función Map con la constante de lista strawberry, ya que el contenido de la lista son todos números decimales. Usando la función map(), puedes redondear todos los elementos de una lista, evitando la necesidad de iterar cada elemento en un bucle para redondearlos uno por uno. Para ello, crea una lista llamada map1 y utiliza la función map() en conjunto con la lista strawberry y la función round(), de esta forma: map1 = list(map(round, strawberry)). Una vez hecho, utiliza la función speak() con map1 para verificar el resultado.
Una vez completado, pasamos a Filter, la cual funciona de manera similar a Map, pero en lugar de eso requiere una función para ser utilizada en conjunto. En la parte superior del editor tendrás una función predefinida llamada main_ingredients que se utiliza para determinar si un número es mayor que 25.
def main_ingredients(value):
return value > 25
En lugar de iterar a través de un bucle, puedes usar esta función en conjunto con la función filter() para componer una nueva lista con los elementos que son mayores a 25, los cuales son los ingredientes principales. Crea una nueva lista llamada filter1 y aplica la función filter() con main_ingredients y map1 para determinar todos los ingredientes principales encontrados en la lista resultante de Map que creaste, de esta manera: filter1 = list(filter(main_ingredients, value)). Una vez hecho, utiliza la función speak() con filter1 para verificar el resultado.
Ahora pasamos a Reduce, que se utiliza de forma similar a Filter, pero en lugar de eso puedes usarla para colapsar o reducir una lista a una sola unidad. Al igual que Filter, se utiliza una función personalizada, esta vez llamada custom_sum, que suma dinámicamente dos números.
def custom_sum(first, second):
return first + second
Crea una variable llamada reduce1 y utiliza la función reduce() en conjunto con la función custom_sum y filter1 para consolidar todos los elementos en una sola unidad, de esta manera: reduce1 = reduce(custom_sum, filter1). Una vez hecho, utiliza la función speak() con reduce1 para verificar el resultado.
Ahora que has completado el ciclo de Map, Filter y Reduce, repite el mismo ciclo en las marcas X iluminadas sobre las alfombras roja y azul. En la alfombra roja, utiliza la constante de lista vanilla y crea map2, filter2 y reduce2. En la alfombra azul, utiliza la constante de lista chocolate y crea map3, filter3 y reduce3.
Camina hacia la última marca X iluminada, que se encuentra sobre la alfombra morada, y suma reduce1, reduce2 y reduce3, reuniendo así los ingredientes principales de vanilla, strawberry y chocolate. Crea una variable llamada neapolitan y suma todos los resultados de Reduce, de la siguiente manera: neapolitan = reduce1+reduce2+reduce3. Utiliza la función speak() con la combinación para verificarla y emplea la función place() con ella para crear helado napolitano y completar el nivel.