typestar

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

  1. yield from recorrer(hijo) reemite los valores de un hijo.
  2. Aplana con limpieza un recorrido recursivo de árbol.
  3. list junta cada nombre en orden de visita.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 5 en Generadores e itertools; paso 11 de 53 en Python pythónico.

← Anterior Siguiente →