Funções Geradoras
Uma função geradora é um tipo especial de função que utiliza a palavra-chave yield
em vez de return
para gerar uma sequência de valores. Quando uma função geradora é chamada, ela retorna um objeto iterador, que pode ser percorrido para recuperar valores um de cada vez.
A principal vantagem das funções geradoras é a sua eficiência de memória. Funções geradoras produzem valores sob demanda, conforme necessário, em vez de gerar toda a sequência de uma só vez. Isso as torna eficientes em termos de memória, especialmente ao lidar com grandes conjuntos de dados ou sequências infinitas.
Veja o exemplo de um gerador simples. Esta função é um gerador que produz logins um a um a partir da lista fornecida:
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))
O princípio de um gerador é permitir que valores sejam retornados um de cada vez utilizando a palavra-chave yield
, sem armazená-los todos na memória ao mesmo tempo. No exemplo apresentado, o gerador unique_logins_from_list
percorre a lista de logins, retornando cada um com yield
e pausando nesse ponto. Quando next()
é chamado, o gerador retoma de onde parou, fornecendo valores de forma eficiente sem a necessidade de armazenar toda a lista na memória simultaneamente. Isso torna os geradores especialmente úteis para manipulação de grandes conjuntos de dados ou fluxos de dados.
Swipe to start coding
Gerar IDs de usuário únicos utilizando uma função geradora. A função id_generator()
deve produzir continuamente identificadores como "ID_1"
, "ID_2"
, etc.
- Inicializar a variável
count
com o valor 1, pois os identificadores começam em 1. - Utilizar um laço
while
infinito para gerar identificadores continuamente. - Utilizar
yield
para retornar o identificador atual no formatof"ID_{count}"
. - Incrementar
count
em 1 após cada iteração. - Inicializar o objeto gerador
id_gen
chamandoid_generator()
.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 4.35
Funções Geradoras
Deslize para mostrar o menu
Uma função geradora é um tipo especial de função que utiliza a palavra-chave yield
em vez de return
para gerar uma sequência de valores. Quando uma função geradora é chamada, ela retorna um objeto iterador, que pode ser percorrido para recuperar valores um de cada vez.
A principal vantagem das funções geradoras é a sua eficiência de memória. Funções geradoras produzem valores sob demanda, conforme necessário, em vez de gerar toda a sequência de uma só vez. Isso as torna eficientes em termos de memória, especialmente ao lidar com grandes conjuntos de dados ou sequências infinitas.
Veja o exemplo de um gerador simples. Esta função é um gerador que produz logins um a um a partir da lista fornecida:
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))
O princípio de um gerador é permitir que valores sejam retornados um de cada vez utilizando a palavra-chave yield
, sem armazená-los todos na memória ao mesmo tempo. No exemplo apresentado, o gerador unique_logins_from_list
percorre a lista de logins, retornando cada um com yield
e pausando nesse ponto. Quando next()
é chamado, o gerador retoma de onde parou, fornecendo valores de forma eficiente sem a necessidade de armazenar toda a lista na memória simultaneamente. Isso torna os geradores especialmente úteis para manipulação de grandes conjuntos de dados ou fluxos de dados.
Swipe to start coding
Gerar IDs de usuário únicos utilizando uma função geradora. A função id_generator()
deve produzir continuamente identificadores como "ID_1"
, "ID_2"
, etc.
- Inicializar a variável
count
com o valor 1, pois os identificadores começam em 1. - Utilizar um laço
while
infinito para gerar identificadores continuamente. - Utilizar
yield
para retornar o identificador atual no formatof"ID_{count}"
. - Incrementar
count
em 1 após cada iteração. - Inicializar o objeto gerador
id_gen
chamandoid_generator()
.
Solução
Obrigado pelo seu feedback!
single