Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Introduzione ai generatori: Produzione di valori per un'iterazione efficiente | Padronanza di Iteratori e Generatori in Python
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Programmazione Strutturale in Python

bookIntroduzione ai generatori: Produzione di valori per un'iterazione efficiente

I generator semplificano la valutazione pigra fornendo un modo conciso e leggibile per creare iteratori. Mentre un iteratore viene implementato come una classe con i metodi __iter__() e __next__(), un generatore viene implementato come una funzione che utilizza la parola chiave yield per produrre valori uno alla volta. I generatori mantengono automaticamente il loro stato tra una chiamata e l'altra, rendendoli più intuitivi ed efficienti per molti casi d'uso.

Un generatore è un tipo speciale di funzione che:

  1. Utilizza la parola chiave yield invece di return;
  2. Sospende l'esecuzione e mantiene il proprio stato quando viene chiamato yield;
  3. Riprende l'esecuzione da dove era stata interrotta quando il generatore viene richiamato.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Differenze tra Iterator e Generatore

Compito

Swipe to start coding

Nel compito precedente, hai implementato un lanciatore di dadi infinito utilizzando una classe iteratore personalizzata. Ora, semplificherai la stessa funzionalità utilizzando una funzione generatore. I generatori offrono un modo conciso e leggibile per produrre valori in modo lazy tramite la parola chiave yield.

  1. Definire la funzione generatore. Utilizza la parola chiave yield all'interno della funzione dice_roller per generare lanci di dado casuali tra 1 e 6. Usa la funzione random.randint() per simulare ogni lancio.
  2. Chiama la funzione dice_roller() per creare un oggetto generatore e assegnalo alla variabile dice_generator.
  3. Usa un ciclo for con enumerate() per iterare sul generatore. Interrompi l'iterazione dopo 10 lanci utilizzando una condizione if e l'istruzione break.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookIntroduzione ai generatori: Produzione di valori per un'iterazione efficiente

Scorri per mostrare il menu

I generator semplificano la valutazione pigra fornendo un modo conciso e leggibile per creare iteratori. Mentre un iteratore viene implementato come una classe con i metodi __iter__() e __next__(), un generatore viene implementato come una funzione che utilizza la parola chiave yield per produrre valori uno alla volta. I generatori mantengono automaticamente il loro stato tra una chiamata e l'altra, rendendoli più intuitivi ed efficienti per molti casi d'uso.

Un generatore è un tipo speciale di funzione che:

  1. Utilizza la parola chiave yield invece di return;
  2. Sospende l'esecuzione e mantiene il proprio stato quando viene chiamato yield;
  3. Riprende l'esecuzione da dove era stata interrotta quando il generatore viene richiamato.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Differenze tra Iterator e Generatore

Compito

Swipe to start coding

Nel compito precedente, hai implementato un lanciatore di dadi infinito utilizzando una classe iteratore personalizzata. Ora, semplificherai la stessa funzionalità utilizzando una funzione generatore. I generatori offrono un modo conciso e leggibile per produrre valori in modo lazy tramite la parola chiave yield.

  1. Definire la funzione generatore. Utilizza la parola chiave yield all'interno della funzione dice_roller per generare lanci di dado casuali tra 1 e 6. Usa la funzione random.randint() per simulare ogni lancio.
  2. Chiama la funzione dice_roller() per creare un oggetto generatore e assegnalo alla variabile dice_generator.
  3. Usa un ciclo for con enumerate() per iterare sul generatore. Interrompi l'iterazione dopo 10 lanci utilizzando una condizione if e l'istruzione break.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 4
single

single

some-alt