Funciones Generadoras
Una función generadora es un tipo especial de función que utiliza la palabra clave yield en lugar de return para generar una secuencia de valores. Cuando se llama a una función generadora, devuelve un objeto iterador, que puede ser recorrido para obtener los valores uno a uno.
La principal ventaja de las funciones generadoras es su eficiencia en el uso de memoria. Las funciones generadoras producen los valores en el momento en que se necesitan, en lugar de generar toda la secuencia de antemano. Esto las hace eficientes en memoria, especialmente al trabajar con conjuntos de datos grandes o secuencias infinitas.
Considere un ejemplo simple de generador. Esta función produce inicios de sesión uno por uno a partir de la lista proporcionada:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
El principio de un generador es que permite devolver valores uno a la vez utilizando la palabra clave yield, sin almacenarlos todos en memoria al mismo tiempo. En nuestro ejemplo, el generador unique_logins_from_list recorre la lista de inicios de sesión, devolviendo cada uno con yield y pausando en ese punto. Cuando se llama a next(), el generador se reanuda desde donde se detuvo, produciendo valores de manera eficiente sin necesidad de almacenar toda la lista en memoria simultáneamente. Esto hace que los generadores sean especialmente útiles para manejar grandes conjuntos de datos o flujos de datos.
Swipe to start coding
Generar IDs de usuario únicos utilizando una función generadora. La función id_generator() debe producir continuamente identificadores como "ID_1", "ID_2", etc.
- Inicializar la variable
countcon el valor 1, ya que los identificadores comienzan desde 1. - Utilizar un bucle infinito
whilepara generar identificadores de forma continua. - Usar
yieldpara devolver el identificador actual en el formatof"ID_{count}". - Incrementar
counten 1 después de cada iteración. - Inicializar el objeto generador
id_genllamando aid_generator().
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how the generator resumes execution after each yield?
What happens if I call next() more times than there are items in the list?
Can you show a real-world scenario where using a generator is better than a regular function?
Awesome!
Completion rate improved to 4.17
Funciones Generadoras
Desliza para mostrar el menú
Una función generadora es un tipo especial de función que utiliza la palabra clave yield en lugar de return para generar una secuencia de valores. Cuando se llama a una función generadora, devuelve un objeto iterador, que puede ser recorrido para obtener los valores uno a uno.
La principal ventaja de las funciones generadoras es su eficiencia en el uso de memoria. Las funciones generadoras producen los valores en el momento en que se necesitan, en lugar de generar toda la secuencia de antemano. Esto las hace eficientes en memoria, especialmente al trabajar con conjuntos de datos grandes o secuencias infinitas.
Considere un ejemplo simple de generador. Esta función produce inicios de sesión uno por uno a partir de la lista proporcionada:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
El principio de un generador es que permite devolver valores uno a la vez utilizando la palabra clave yield, sin almacenarlos todos en memoria al mismo tiempo. En nuestro ejemplo, el generador unique_logins_from_list recorre la lista de inicios de sesión, devolviendo cada uno con yield y pausando en ese punto. Cuando se llama a next(), el generador se reanuda desde donde se detuvo, produciendo valores de manera eficiente sin necesidad de almacenar toda la lista en memoria simultáneamente. Esto hace que los generadores sean especialmente útiles para manejar grandes conjuntos de datos o flujos de datos.
Swipe to start coding
Generar IDs de usuario únicos utilizando una función generadora. La función id_generator() debe producir continuamente identificadores como "ID_1", "ID_2", etc.
- Inicializar la variable
countcon el valor 1, ya que los identificadores comienzan desde 1. - Utilizar un bucle infinito
whilepara generar identificadores de forma continua. - Usar
yieldpara devolver el identificador actual en el formatof"ID_{count}". - Incrementar
counten 1 después de cada iteración. - Inicializar el objeto generador
id_genllamando aid_generator().
Solución
¡Gracias por tus comentarios!
single