Costruisci un generatore
Negli esercizi precedenti, hai lavorato soprattutto con le espressioni generatrici di codice, che usano la sintassi di comprensione. La possibilità di usare la sintassi di comprensione per le espressioni generatrici ha reso il tuo lavoro molto più facile!
Ora, ricordiamo dal video che non ci sono solo espressioni generatrici, ma anche funzioni generatrici. Le funzioni generatrici sono funzioni che, come le espressioni generatrici, producono una serie di valori invece di restituire un singolo valore. Una funzione generatrice si definisce come una normale funzione, ma ogni volta che genera un valore, usa la parola chiave ` yield invece di return`.
In questo esercizio creerai una funzione generatrice con un meccanismo simile all'espressione generatrice che hai definito nell'esercizio precedente:
lengths = (len(person) for person in lannister)
Questo esercizio fa parte del corso
Strumenti per Python
Istruzioni dell'esercizio
- Completa l'intestazione della funzione per la funzione
get_lengths()che ha un solo parametro,input_list. - Nel ciclo "
for" nella definizione della funzione, "yield" la lunghezza delle stringhe in "input_list". - Completa la parte iterabile del ciclo `
forper stampare i valori generati dalla funzione generatriceget_lengths()`. Fai la chiamata aget_lengths(), passando la listalannister.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)