Come filtrare l’elenco in Python nel modo giusto per ottenere di più dai tuoi dati

In Python, uno dei modi più popolari per archiviare dati sequenziali o ordinati è attraverso l’uso di elenchi. Un elenco in Python è una struttura di dati integrata, mutabile e ordinata che viene utilizzata per archiviare una raccolta di dati. Gli elementi memorizzati in un elenco vengono indicizzati a partire da zero e gli utenti possono modificare il contenuto di un elenco dopo che è stato creato.

Il fatto che gli elementi in un elenco siano indicizzati consente la memorizzazione di elementi duplicati in un elenco. Gli elenchi in Python possono anche contenere elementi di diversi tipi di dati. Gli elementi in un elenco sono separati da virgole e racchiusi tra parentesi quadre.

Ecco alcuni esempi di liste in Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Gli elenchi sono una struttura di dati molto versatile e puoi eseguire molte operazioni sui dati memorizzati negli elenchi. Un’operazione comune e utile eseguita sugli elenchi è filtrare i dati memorizzati nell’elenco.

Perché filtrare gli elenchi è importante

Filtrare un elenco significa estrarre specifici sottoinsiemi di dati che soddisfano determinati criteri. Ad esempio, potremmo essere interessati solo ai numeri pari in un elenco contenente i numeri da 1 a 10. Per estrarre tali dati dall’elenco, tutto ciò che dobbiamo fare è filtrare l’elenco per ottenere numeri esattamente divisibili per due.

Il filtraggio è particolarmente utile nella manipolazione dei dati e nell’analisi dei dati in quanto consente di rimuovere elementi indesiderati dagli elenchi, creare nuovi elenchi contenenti elementi che soddisfano determinati criteri ed estrarre dati che soddisfano determinate condizioni.

Alcune applicazioni del mondo reale degli elenchi di filtri includono:

  • Convalida dei dati: quando lavori con un elenco, potresti voler lavorare solo con i dati che soddisfano determinati criteri. Ad esempio, in un elenco di utenti, potresti essere interessato a utenti con nome e cognome. Il filtraggio può consentire di verificare e convalidare i dati nell’elenco prima di elaborarli. In questo modo, eviti di lavorare con dati che non soddisfano i tuoi requisiti.
  • Pulizia dei dati: poiché gli elenchi possono memorizzare una varietà di tipi di dati, non è raro scoprire che gli elenchi contengono dati indesiderati che non ti interessano. Ad esempio, in un elenco contenente nomi, potresti non essere interessato ai valori numerici in la lista. Attraverso il filtraggio, puoi rimuovere i dati indesiderati.
  • Analisi dei dati: il filtraggio dei dati è particolarmente utile nell’analisi dei dati in quanto consente di concentrarsi su specifici sottoinsiemi di dati, il che consente di identificare facilmente modelli e tendenze. Ad esempio, in un elenco di studenti, puoi filtrare studenti maschi e femmine e utilizzare il risultato nell’analisi dei dati. Puoi persino filtrare in base all’età, alla posizione e al grado. Ciò consente di trarre conclusioni più utili da specifici sottoinsiemi di dati in un elenco

Il filtraggio degli elenchi è una funzione molto utile in quanto ti dà il controllo sui dati memorizzati in un elenco permettendoti di lavorare solo con i dati che ti interessano.

Il targeting di sottoinsiemi specifici di dati archiviati in un elenco è molto utile in quanto semplifica l’elaborazione e l’analisi dei dati rendendo i processi migliori, più veloci e più accurati.

Utilizzo della funzione filter()

La funzione filter() è una funzione Python incorporata che può essere utilizzata per scorrere un iterabile come un elenco, tuple, set o dizionario ed estrarre gli elementi nell’iterabile che soddisfano una determinata condizione.

Un Iterable in Python è un oggetto che può essere ripetuto attraverso i suoi elementi uno per uno. L’iterazione attraverso un iterabile restituisce gli elementi nell’iterabile uno alla volta.

La sintassi per la funzione filtro è la seguente:

filter(function, iterable)

function – una funzione Python che contiene la condizione di filtraggio

iterable – l’iterabile che verrà filtrato. In questo caso, useremo un elenco.

La funzione filter() prende la funzione passata e la applica a ciascun elemento nell’iterabile passato, verificando la condizione di filtro rispetto all’elemento. Se l’elemento soddisfa la condizione, ovvero restituisce il valore booleano true, che verrà selezionato dalla funzione filter(). Nel caso in cui non soddisfi la condizione, l’articolo non è selezionato.

La funzione filter() restituisce un iterabile con elementi che hanno superato la condizione di filtro. È possibile creare un nuovo elenco contenente gli elementi che hanno superato la condizione di filtro utilizzando la funzione list().

Per vedere la funzione filter() in azione, considera l’elenco seguente, che viene filtrato per selezionare numeri inferiori a 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Il codice precedente stampa il seguente risultato:

[15, 46, 24, 37]

Usando un ciclo for

In Python, un ciclo for è un’istruzione del flusso di controllo utilizzata per iterare su strutture di dati sequenziali come un elenco, tuple, stringhe e array. Un ciclo for esegue ripetutamente un blocco di codice per ogni elemento in una sequenza.

La sintassi generale per un ciclo for è la seguente:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

item: una variabile che rappresenta l’elemento corrente in fase di elaborazione in un’iterazione del ciclo

iterable – la sequenza su cui itera il ciclo for. In questo caso, un elenco

Per filtrare un elenco usando un ciclo for, dovremo passare la nostra condizione di filtraggio nella sezione per il blocco di codice da eseguire. In questo modo, ogni elemento verrà valutato per vedere se soddisfa una data condizione.

Quando si utilizza un ciclo for per filtrare un elenco, è necessario creare anche un elenco vuoto in cui aggiungere i valori che superano la condizione di filtro.

Per vederlo in azione, filtriamo un elenco di numeri per ottenere numeri inferiori a 50 utilizzando un ciclo for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Il codice precedente stampa il seguente risultato:

[15, 46, 24, 37]

Utilizzando un altro elenco

Puoi filtrare un elenco usando un altro controllando se un elemento in un elenco che desideri filtrare appare in un altro elenco. Ad esempio, considera i seguenti due elenchi

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Nell’elenco chiamato lettere sopra, possiamo determinare quali elementi nell’elenco non sono vocali controllando se l’elemento appare o meno nell’elenco delle vocali. Se un elemento non compare nell’elenco delle vocali, allora non è una vocale.

In questo modo, possiamo ottenere tutti i caratteri in lettere che non sono vocali. Per fare ciò, eseguire il seguente codice:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Il codice precedente stampa il seguente output, che contiene caratteri in lettere che non sono vocali.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Utilizzo della comprensione delle liste

In Python, la comprensione dell’elenco offre una sintassi più breve, più concisa e più pulita per creare un nuovo elenco da un elenco esistente. La comprensione dell’elenco ha la capacità di ridurre le molteplici righe di codice utilizzate per creare un nuovo elenco da un altro elenco utilizzando un ciclo for in una singola riga.

Questo perché quando si utilizza la comprensione dell’elenco, si definiscono e si aggiungono elementi al nuovo elenco tutti in una riga.

La sintassi per la comprensione delle liste è la seguente:

new_list = [expression for element in iterable if condition]

new_list – un nuovo elenco contenente elementi aggiunti dalla comprensione dell’elenco

espressione: un’operazione che verrà applicata a ciascun elemento dell’iterabile

item – nome della variabile che rappresenta l’elemento attualmente attivo nell’iterabile

iterable: un iterabile da cui verranno selezionati gli elementi.

if condizione: una parte facoltativa in cui è possibile aggiungere una condizione per filtrare gli elementi per aggiungere solo quelli che soddisfano una determinata condizione nel nuovo elenco che si sta creando.

Per vedere la comprensione dell’elenco in azione e quanto può semplificare il processo di filtraggio e creazione di un nuovo elenco, useremo l’elenco delle lettere e delle vocali per filtrare gli elementi nell’elenco delle lettere che non sono nell’elenco delle vocali. Per fare ciò, eseguire il seguente codice:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

L’output del codice sopra è mostrato di seguito:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

L’output è simile all’esempio precedente, che utilizzava un ciclo for per filtrare un elenco utilizzando un altro elenco. Tuttavia, utilizza meno righe di codice per ottenere lo stesso risultato.

Conclusione

Quando lavori con i dati in Python, un’operazione comune che devi eseguire è filtrare i dati da un iterabile come un elenco. Questo è un passaggio molto utile nell’analisi e nell’elaborazione dei dati in quanto consente di lavorare solo con i dati rilevanti per l’operazione o l’elaborazione in corso.

Una struttura di dati sequenziali molto popolare in Python è la lista. Nel caso in cui ti trovi a lavorare con un elenco e devi filtrarlo, considera l’utilizzo di uno dei metodi evidenziati nell’articolo.

Puoi anche leggere come utilizzare le funzioni lambda in Python con esempi.