Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Concatenazione e Composizione di Iteratori | Python Iterators
Concetti di Programmazione Funzionale in Python

bookConcatenazione e Composizione di Iteratori

Scorri per mostrare il menu

Concatenazione e composizione di iteratori per la creazione di pipeline di dati efficienti in Python. Collegando tra loro semplici funzioni iteratore o generatori, è possibile elaborare i dati passo dopo passo, con ogni fase che trasforma o filtra i dati prima di passarli alla successiva. Questo approccio è particolarmente utile quando si desidera applicare più operazioni in sequenza, come filtrare elementi e poi trasformarli, oppure combinare dati provenienti da diverse fonti. Il video sopra mostra come utilizzare pipeline di generatori per mantenere il codice modulare ed efficiente in termini di memoria, evitando la creazione di liste intermedie.

Per vedere questo concetto in pratica, si consideri uno scenario in cui si dispone di una sequenza di numeri e si desidera filtrare i numeri pari, quindi elevare al quadrato quelli rimanenti. È possibile ottenere questo risultato concatenando due funzioni generatore: una per il filtraggio e una per la trasformazione. Questo approccio garantisce che ogni elemento venga elaborato solo quando necessario, rendendo il codice sia conciso che efficiente.

12345678910111213141516171819
def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
copy

La prima funzione, filter_odds, accetta un iterabile di numeri e restituisce solo quelli dispari. La seconda funzione, square_numbers, accetta un iterabile e restituisce il quadrato di ciascun numero. Passando l'output di filter_odds direttamente a square_numbers, si crea una pipeline: prima il filtraggio, poi la trasformazione dei dati. Il risultato finale viene raccolto in una lista e stampato, mostrando i quadrati di tutti i numeri dispari da 0 a 9.

Questo metodo è efficiente in termini di memoria perché ogni valore viene elaborato uno alla volta, invece di creare liste intermedie. Inoltre, mantiene il codice modulare, poiché ogni funzione generatore svolge un solo compito e può essere riutilizzata in diverse pipeline.

question mark

Quale dei seguenti è un vantaggio del collegare iteratori e generatori in Python?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

Sezione 5. Capitolo 6
some-alt