¿Ya dominas lo básico? Un curso estructurado de Python es la vía rápida para dar el salto.
Ver cursos de Python en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Variables y print()
- 03Condicionales (sentencias if)
- 04Bucles (sentencias for)
- 05Tu primera función
- 06Trabajar con listas
- 07Trabajar con diccionarios (dict)
- 08Bucles (sentencias while)
- 09Trabajar con cadenas de texto
- 10Introducción a las clases (programación orientada a objetos)
- 11Gestión de errores (try...except)
- 12Comprensiones de lista
- 13Generadores y yield
- 14Fundamentos del manejo de archivos
- 15La sentencia match (el switch de Python)
- 16La expresión condicional (operador ternario)
- 17Herencia (extender una clase)
- 18Escribir comentarios
- 19Operadores lógicos (and, or, not)
- 20Constantes (valores que se acuerda no cambiar)
- 21Dividir y unir cadenas (split, join)
- 22Escribir código seguro frente a None
- 23Buscar en una lista (in y encontrar la primera coincidencia)
- 24Transformar una lista con map()
- 25Listas bidimensionales (datos en forma de tabla)
- 26Crear una clase de excepción propia
- 27Argumentos por defecto (valores iniciales de los parámetros)
- 28Trabajar con conjuntos (set)
- 29Comprobar con assert (tu primer paso hacia las pruebas)
- 30Funciones de orden superior (pasar una función como argumento)
- 31Pilas y colas (estructuras de datos básicas)
- 32Fundamentos de la conversión de tipos
- 33Introducción a las expresiones regulares
- 34El algoritmo de búsqueda binaria
- 35Construir un cifrado César (desplazar letras)
- 36Entender cómo funciona la ordenación de burbuja
- 37Construir y mostrar fechas (año, mes y día)
- 38Escribir varios casos de prueba juntos
- 39Acelerar cálculos con memoización (caché)
- 40Normalizar cadenas (strip, unificar mayúsculas)
- 41Copia superficial frente a copia profunda
- 42Fundamentos de Enum (tipos enumerados)
- 43Aplanar una lista
- 44Invertir una cadena y detectar palíndromos
- 45Emparejar dos listas (la operación zip)
- 46Redondear números (floor, ceil, round)
- 47Cadenas de varias líneas (comillas triples)
- 48Funciones que devuelven varios valores (tuplas)
- 49Calcular el MCD y el MCM (algoritmo de Euclides)
- 50Dar formato a números (rellenar dígitos, decimales)
- 51Lógica de limpieza con try/except/finally
- 52Escribir funciones que no dependen del tipo
- 53Fundamentos de la sentencia with (gestores de contexto)
- 54Generar números aleatorios
- 55Operadores a nivel de bits (AND, OR, XOR, desplazamientos)
- 56Variables de clase y fundamentos de @staticmethod
- 57Esperar un tiempo determinado (time.sleep)
- 58Cuidado con los errores de redondeo en coma flotante
- 59Fundamentos de las anotaciones de tipo
- 60FizzBuzz (el ejercicio clásico)
- 61Comprobar si un número es primo
- 62Operaciones con conjuntos (unión, intersección, diferencia)
- 63Convertir entre bases numéricas (binario, hexadecimal)
- 64Comprobar si los paréntesis están equilibrados (aplicación de pilas)
- 65Comprobar si dos palabras son anagramas
- 66Comprobar si un año es bisiesto
- 67Convertir temperaturas (Celsius a Fahrenheit)
- 68Descomposición en factores primos
- 69[Aplicado] Construye una herramienta de cuentas domésticas
Generadores y yield
En esta lección verás lo básico de los generadores con yield, para entender cómo manejar grandes cantidades de datos sin gastar memoria. Está pensada para quien busca «yield y generadores en Python» o «para qué sirve yield en Python».
Una función que usa yield se llama generador y devuelve los valores de uno en uno en lugar de todos a la vez. Como nunca necesita tener todos los valores en memoria al mismo tiempo, va muy bien para trabajar con grandes volúmenes de datos. La idea es «producir un valor solo cuando hace falta», un mecanismo radicalmente distinto al de una función normal.
La función count_up_to del ejemplo pausa su ejecución cada vez que llega a yield i y entrega un valor a quien la llamó. Cuando recorres un generador con un for, la ejecución se reanuda justo donde se había quedado y continúa hasta el siguiente yield: un flujo de control completamente distinto al de un return normal.
Un error habitual al empezar es no darse cuenta de que un generador solo se puede consumir una vez. Después de haber extraído todos los valores, volver a recorrer el mismo generador no produce nada. Si necesitas usarlo de nuevo, tienes que llamar otra vez a la función generadora para crear uno nuevo.
Los generadores son una herramienta muy práctica en el trabajo real: leer un archivo de registro enorme línea a línea cuando la memoria es limitada, por ejemplo. Comparados con una función que lo devuelve todo como lista, también son más flexibles cuando quieres detener el proceso a mitad.
💡 El motor de Python puede tardar unos segundos en cargarse la primera vez que ejecutas código.
