
La funzione takewhile di Python
La funzione takewhile() ti permette di creare un iteratore che estrae elementi da un iterabile (come una lista) fintanto che una condizione specificata rimane vera.
takewhile(predicate, iterable)
Questa funzione prende due argomenti: una funzione e un iterabile.
- predicate è una funzione che definisce la condizione da valutare per ogni elemento dell'iterabile.
- iterable è l'iterabile (come una lista, tupla, etc.) da cui takewhile() estrae gli elementi.
Restituisce un iteratore che produce elementi dall'iterabile finché la funzione fornita restituisce True.
Questa funzione è particolarmente utile quando si lavora con sequenze o iterabili e si desidera estrarre elementi basandosi su una condizione specifica.
La funzione takewhile() è una funzione che appartiene al modulo itertools.
Quindi, prima di utilizzarla in Python, devi importare il modulo itertools o la singola funzione:
from itertools import takewhile
Ecco un esempio pratico di come si usa takewhile().
Immagina di avere una lista di numeri e di voler estrarre i numeri continuativamente fino a quando non incontriamo un numero che non soddisfa una certa condizione.
Per prima cosa, definisci una semplice funzione is_less_than_5() che controlla se un elemento è minore di 5.
- def is_less_than_5(x):
- return x < 5
Crea una lista di numeri
numbers = [1, 4, 6, 4, 1]
A questo punto usa takewhile per ottenere i numeri fino a quando non incontra un numero che non soddisfa la condizione: "minore di 5".
result = takewhile(is_less_than_5, numbers)
In questo esempio, takewhile() continua a prendere gli elementi dalla lista "numbers", li passa come argomento alla funzione is_less_than_5() e li aggiunge all'iteratore "result" fino a quando non incontra un numero che non è minore di 5.
L'estrazione degli elementi dall'iterabile termina quando la funzione is_less_than_5() restituisce False.
Ora stampa il risultato finale.
print(list(result))
In questo caso, il risultato è [1, 4] poiché il successivo numero nella lista, 6, non soddisfa la condizione della funzione is_less_than_5.
[1, 4]
Ricorda che la funzione trakewhile() produce un iteratore in output.
Quindi, se vuoi ottenere una lista in uscita devi trasformare l'iteratore in una lista tramite la funzione list().