Expresiones generadoras en Python
Comprensiones perezosas que calculan un elemento a la vez.
lecturas = [21.5, 19.8, 23.1, 22.4, 18.9]
total = sum(r for r in lecturas if r > 20)
maxima = max(r for r in lecturas)
alguna_fria = any(r < 19 for r in lecturas)
todas_templadas = all(15 < r < 25 for r in lecturas)
cuadrados = (n * n for n in range(1_000_000))
primero = next(cuadrados)
segundo = next(cuadrados)
conteo = sum(1 for r in lecturas if r > 20)
Cómo funciona
sum(r for r in lecturas if r > 20)nunca construye una lista.anyyallcortocircuitan sobre el stream.nextsaca valores individuales de una expresión sin fin.
Palabras clave y builtins usados aquí
allanyforifmaxnextrangesum
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 360
- Tokens
- 103
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 62 segundos.
Paso 4 de 4 en Comprensiones; paso 4 de 53 en Python pythónico.