Encadenamiento y Composición de Iteradores
Desliza para mostrar el menú
Encadenar y componer iteradores permite construir potentes flujos de procesamiento de datos en Python. Al enlazar funciones simples de iteradores o generadores, es posible procesar los datos paso a paso, transformando o filtrando la información en cada etapa antes de pasarla a la siguiente. Este enfoque resulta especialmente útil cuando se desea aplicar varias operaciones en secuencia, como filtrar elementos y luego transformarlos, o combinar datos de varias fuentes. El video anterior ilustra cómo utilizar flujos de generadores para mantener el código modular y eficiente en el uso de memoria, evitando la necesidad de crear listas intermedias.
Para ver esto en acción, considere un escenario en el que se tiene una secuencia de números y se desea filtrar los números pares, y luego elevar al cuadrado los números restantes. Esto se puede lograr encadenando dos funciones generadoras: una para filtrar y otra para transformar. Este enfoque garantiza que cada elemento se procese solo cuando sea necesario, haciendo que el código sea conciso y eficiente.
12345678910111213141516171819def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
La primera función, filter_odds, recibe un iterable de números y produce solo aquellos que son impares. La segunda función, square_numbers, toma un iterable y produce el cuadrado de cada número. Al pasar la salida de filter_odds directamente a square_numbers, se crea un flujo de procesamiento: primero se filtran y luego se transforman los datos. El resultado final se recopila en una lista y se imprime, mostrando los cuadrados de todos los números impares del 0 al 9.
Este método es eficiente en el uso de memoria porque cada valor se procesa uno a la vez, en lugar de crear listas intermedias. También mantiene el código modular, ya que cada función generadora realiza una sola tarea y puede reutilizarse en diferentes flujos de procesamiento.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla