Construção de um gerador
Nos exercícios anteriores, você lidou principalmente com a escrita de expressões geradoras, que usam a sintaxe de compreensão. A possibilidade de usar a sintaxe de compreensão para expressões geradoras facilitou muito o seu trabalho!
Agora, lembre-se de que você viu no vídeo que não existem apenas expressões geradoras, mas também funções geradoras. As funções geradoras são funções que, como as expressões geradoras, produzem uma série de valores, em vez de retornar um único valor. Uma função geradora é definida da mesma forma que você define uma função normal, mas sempre que gera um valor, ela usa a palavra-chave yield
em vez de return
.
Neste exercício, você criará uma função geradora com um mecanismo semelhante ao da expressão geradora que definiu no exercício anterior:
lengths = (len(person) for person in lannister)
Este exercício faz parte do curso
Caixa de ferramentas Python
Instruções de exercício
- Complete o cabeçalho da função
get_lengths()
que tem um único parâmetro,input_list
. - No loop
for
na definição da função,yield
o comprimento das strings eminput_list
. - Complete a parte iterável do loop
for
para imprimir os valores gerados pela função geradoraget_lengths()
. Forneça a chamada paraget_lengths()
, passando a listalannister
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']
# Define generator function get_lengths
def ____:
"""Generator function that yields the
length of the strings in input_list."""
# Yield the length of a string
for person in input_list:
____
# Print the values generated by get_lengths()
for value in ____:
print(value)