
La funzione dropwhile() di Python
La funzione dropwhile() è una funzione del modulo itertools di Python, che ti permette di scartare gli elementi di una sequenza fintanto che una condizione specificata rimane vera.
dropwhile(predicate, iterable)
Questa funzione ha due argomenti:
- predicate è una funzione che determina la condizione. Prende un elemento della sequenza e restituisce True o False. Può essere sia una funzione definita dall'utente sia una funzione anonima (lambda).
- iterable è la sequenza da cui gli elementi verranno prelevati (ad esempio, una lista, una stringa, un set, ecc.)
Gli elementi dell'iterabile vengono eliminati fin quando la funzione predicate restituisce True.
Una volta che un elemento non soddisfa la condizione, dropwhile() inizia a restituire tutti gli elementi rimanenti della sequenza senza eseguire più il test.
La funzione non modifica la sequenza originale, ma produce una nuova sequenza di elementi. Restituisce in uscita un nuovo iteratore.
Ecco un esempio pratico.
Per prima cosa, devi importare la funzione dropwhile dal modulo itertools
from itertools import dropwhile
Ora crea una lista di numeri.
numeri = [1, 3, 4, 7, 9, 1]
Supponi di voler scartare i numeri finché sono minori di 5.
Utilizza la funzione dropwhile() con una funzione lambda che restituisce True se l'argomento è minore di 5.
risultato = dropwhile(lambda x: x < 5, numeri)
La funzione lambda restituisce True per i primi tre elementi della lista (1,3,4). Poi restituisce False quando incontra il valore 7.
Stampa il risultato ottenuto.
print(list(risultato))
Il risultato è la sequenza [7, 9, 1] ottenuta scartando i primi valori 1, 3 e 4 minori di 5.
[7,9,1]
Come puoi notare, nella sequenza restituita c'è anche un valore minore di 5.
Questo accade perché la funzione dropwhile() smette di filtrare i valori quando la funzione restituisce False.
Ricorda che dropwhile() restituisce un iteratore. Per convertirlo in una lista o in un'altra struttura di dati, devi utilizzare funzioni come list(), set(), ecc.
In conclusione, dropwhile() è uno strumento utile per filtrare gli elementi di una sequenza in base a una condizione, quando ignorare solo una parte iniziale dei dati.