Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Encadenamiento y Composición de Iteradores | Python Iterators
Conceptos de Programación Funcional en Python

bookEncadenamiento 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.

12345678910111213141516171819
def 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]
copy

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.

question mark

¿Cuál de los siguientes es un beneficio de encadenar iteradores y generadores en Python?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 5. Capítulo 6
some-alt