lettura facile

La funzione filterfalse() di Python itertools

La funzione filterfalse() è una funzione nel modulo itertools di Python che ti permette di filtrare gli elementi di un iterabile.

filterfalse(predicate, iterable)

Questa funzione prende due argomenti: una funzione predicate e un iterable.

  • La predicate è una funzione che viene applicata a ciascun elemento dell'iterable e restituisce un valore booleano (True o False).
  • L'iterable è una collezione di elementi che può essere iterata come una lista, tupla, set, o qualsiasi oggetto iterabile in Python.

La funzione filterfalse() restituisce un iteratore contenente quegli elementi dell'iterabile per cui la funzione predicate restituisce False.

La funzione filterfalse() si trova nel modulo itertools di Python. Quindi, prima di poter usare filterfalse(), devi importare il modulo itertools tramite l'istruzione import

import itertools

oppure la singola funzione

from itertools import filterfalse

Ecco un esempio pratico.

In questo script è definita la funzione is_even() per verificare se un un numero è pari o dispari e una lista di numeri "numbers".

  1. from itertools import filterfalse
  2. def is_even(n):
  3. return n % 2 == 0
  4. numbers = [1, 2, 3, 4, 5, 6]
  5. odd_numbers = filterfalse(is_even, numbers)
  6. print(list(odd_numbers))

La funzione filterfalse() opera sequenzialmente su ogni elemento dell'elenco numbers, passandoli uno ad uno come argomento alla funzione is_even() che restituisce True se il numero è pari e False se è dispari.

In base al risultato, filterfalse() seleziona e include nell'iteratore risultante solo quegli elementi per cui is_even() ha restituito False, ovvero i numeri dispari.

[1, 3, 5]

In questo modo hai filtrato tutti i numeri dispari presenti nella lista di numeri iniziale.

Ricorda che filterfalse() restituisce un iteratore, quindi puoi iterare su di esso per leggere i valori filtrati. Se vuoi ottenere una lista come risultato, devi convertire l'iteratore in una lista usando la funzione list(), come abbiamo fatto nell'esempio precedente.

Puoi usare filterfalse() anche con funzioni lambda.

Ad esempio, questo script fa la stessa cosa dell'esempio precedente utilizzando una funzione lambda.

  1. numbers = [1, 2, 3, 4, 5, 6]
  2. odd_numbers = filterfalse(lambda x: x % 2 == 0, numbers)
  3. print(list(odd_numbers))

La funzione filterfalse() seleziona tutti i numeri della lista che non soddisfano la funzione lambda e li restituisce in output.

Il risultato è la lista di numeri dispari presenti nella lista "numbers" iniziale.

[1, 3, 5]

In generale, la funzione filterfalse() è molto utile quando hai bisogno di rimuovere elementi da un iterabile in base a una condizione specifica.

È una funzione versatile che puoi utilizzare in diversi contesti nella programmazione Python.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin