IniziaInizia gratis

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

Visualizza il corso

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 ` for per stampare i valori generati dalla funzione generatrice get_lengths() `. Fai la chiamata a get_lengths(), passando la lista lannister.

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)
Modifica ed esegui il codice