typestar

Pipelines de generadores en Python

Encadenar generadores para que los datos fluyan por etapas perezosamente.

def numeros(limite):
    for n in range(limite):
        yield n


def solo_impares(fuente):
    for n in fuente:
        if n % 2:
            yield n


def escalado(fuente, factor):
    for n in fuente:
        yield n * factor


pipeline = escalado(solo_impares(numeros(10)), 100)
resultado = list(pipeline)

Cómo funciona

  1. Cada yield entrega un valor corriente abajo.
  2. solo_impares y escalado envuelven al generador anterior.
  3. Nada se calcula hasta que list tira del pipeline.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
262
Tokens
71
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 43 segundos.

Escribe este fragmento

Paso 1 de 5 en Generadores e itertools; paso 10 de 53 en Python pythónico.

← Anterior Siguiente →