`break`, `continue` y el `else` de bucles en Python
Cómo `break` y `continue` controlan el flujo dentro de bucles, y por qué la cláusula `else` elimina la necesidad de variables bandera en patrones de búsqueda.
Cómo `break` y `continue` controlan el flujo dentro de bucles, y por qué la cláusula `else` elimina la necesidad de variables bandera en patrones de búsqueda.
Cuándo y cómo usar `while` en Python: condición directa, `while True` con `break`, backoff exponencial y máquinas de estados simples.
El for de Python itera sobre cualquier objeto iterable, no sobre índices. Patrones con enumerate(), zip() y generadores.
El match de Python no es un switch: es deconstrucción estructural. Patrones de secuencia, mapping, clase y guards con casos de uso reales.
Condiciones con truthiness, condiciones compuestas con and/or/not, elif como alternativa a else/if anidado y la sintaxis del operador ternario.
Diferencias de memoria y uso entre generator expressions y list comprehensions en Python, cuándo elegir cada una y la limitación del recorrido único.
Sintaxis completa, comprehensions anidadas, dict y set comprehensions, y cuándo preferir un bucle for convencional.
Colecciones únicas respaldadas por hash table: operadores de conjunto, mutación segura con discard, búsquedas O(1) y frozenset como versión hashable.
Cómo CPython implementa dicts con dos arrays separados, por qué eso garantiza orden de inserción, y qué contratos debe cumplir una clave hashable.
Cómo funciona la hash table detrás de los dicts, por qué el orden está garantizado desde Python 3.7, y cómo usar métodos clave y comprehensions.