yield from en Python
Delegar la iteración a un subgenerador, para la recursión.
def recorrer(nodo):
yield nodo["name"]
for hijo in nodo.get("children", []):
yield from recorrer(hijo)
arbol = {
"name": "root",
"children": [
{"name": "src", "children": [{"name": "app.py"}]},
{"name": "README.md"},
],
}
nombres = list(recorrer(arbol))
Cómo funciona
yield from recorrer(hijo)reemite los valores de un hijo.- Aplana con limpieza un recorrido recursivo de árbol.
listjunta cada nombre en orden de visita.
Palabras clave y builtins usados aquí
defforlistyield
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 256
- Tokens
- 97
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 58 segundos.
Paso 2 de 5 en Generadores e itertools; paso 11 de 53 en Python pythónico.