ComeçarComece gratuitamente

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

Ver Curso

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 em input_list.
  • Complete a parte iterável do loop for para imprimir os valores gerados pela função geradora get_lengths(). Forneça a chamada para get_lengths(), passando a lista lannister.

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)
Editar e executar código