Filtrare le liste in Python

In questo post, discuteremo tre metodi per filtrare le liste in Python. In particolare, vedremo come usare la comprensione delle liste, le espressioni generatrici e il metodo built-in ‘filter()’ per filtrare le liste in Python.

Iniziamo!

Supponiamo di avere dei dati in una lista e di voler estrarre dei valori o ridurre la lista in base ad alcuni criteri. In particolare, consideriamo la seguente lista che contiene una lista di spese mediche con alcuni valori mancanti:

medical_charges = 
print(medical_charges)

Per iniziare, possiamo usare la comprensione della lista per filtrare i valori ‘Nessuno’:

medical_charges = 
print(medical_charges)

Possiamo anche convertire gli elementi della lista in interi con una leggera modifica alla comprensione della lista:

medical_charges = 
print(medical_charges)

Convertendo ogni elemento in un intero, possiamo anche filtrare in base alla grandezza di ogni intero. Supponiamo di voler mantenere le spese maggiori o uguali a 500 dollari, possiamo scrivere la seguente comprensione della lista:

medical_charges = 
print(medical_charges)

FILTRAGGIO CON I GENERATORI

Se abbiamo a che fare con una quantità significativa di dati, che è spesso il caso delle cartelle cliniche, possiamo filtrare iterativamente usando un’espressione generatrice. Se vogliamo convertire la nostra lista originale usando un’espressione generatrice, facciamo quanto segue:

charges = (int(n) for n in medical_charges if n != None)
print(charges)

La principale differenza di sintassi, dalla comprensione della lista, è l’uso delle parentesi al posto delle parentesi quadre. Ora possiamo iterare il generatore:

for charge in charges:
print(charge)

FILTRAZIONE USANDO I METODI ‘LIST()’ E ‘FILTER()’

Ci sono momenti in cui i criteri di filtraggio non possono essere facilmente espressi usando la comprensione della lista o le espressioni del generatore. Consideriamo l’esempio di convertire la nostra lista originale di spese mediche con valore di stringa in numeri interi e di rimuovere i valori mancanti:

medical_charges = 

Possiamo definire una funzione che prende una lista e prova a convertire ogni elemento in un numero intero. Quando la conversione non genera errori, restituiamo true. Quando la conversione genera un errore di valore, usiamo una dichiarazione except per catturare l’errore e restituire false:

def convert_and_filter(input_list):
try:
int(input_list)
return True
except ValueError:
return False

Possiamo quindi usare i metodi built-in ‘filter()’ e ‘list()’. La funzione ‘filter()’ crea un iteratore e il metodo ‘list()’ ci permette di creare una lista di risultati:

charges = list(filter(convert_and_filter, medical_charges))
print(charges)

Mi fermo qui, ma sentitevi liberi di giocare con gli esempi precedenti. Per esempio, potete provare a cambiare le condizioni di filtraggio nell’esempio di comprensione della lista per includere solo le spese inferiori o uguali a $500.

CONCLUSIONI

Per riassumere, in questo post abbiamo discusso quattro metodi per filtrare le liste in Python. Abbiamo discusso la comprensione delle liste che è utile per la sua leggibilità. Abbiamo anche discusso delle espressioni generatrici che usiamo se vogliamo evitare di generare grandi risultati da grandi insiemi di dati. Infine, abbiamo discusso l’uso dei metodi built-in ‘filter()’ e ‘list()’, insieme ad una funzione personalizzata, per filtrare le liste. Spero che abbiate trovato questo post utile/interessante. Il codice di questo post è disponibile su GitHub. Grazie per aver letto!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *