Introduzione
Le liste sono utili in diversi modi rispetto ad altri tipi di dati per la loro versatilità. In questo articolo daremo un’occhiata ad una delle operazioni più comuni con le liste – trovare l’indice di un elemento.
Vedremo diversi scenari per trovare un elemento, cioè trovare la prima, l’ultima e tutte le occorrenze di un elemento. Così come cosa succede quando l’elemento che stiamo cercando non esiste.
Utilizzando la funzione index()
Il parametro element
rappresenta naturalmente l’elemento che stiamo cercando. I parametri start
e end
sono opzionali e rappresentano la gamma di indici in cui cerchiamo il element
.
Il valore di default per start
0
(ricerca dall’inizio), e il valore di default per end
è il numero di elementi nella lista (ricerca fino alla fine della lista).
La funzione restituisce la prima posizione del element
nella lista che ha potuto trovare, indipendentemente da quanti elementi uguali ci sono dopo la prima occorrenza.
Trovare la prima occorrenza di un elemento
Utilizzando la funzione index()
senza impostare alcun valore per start
e end
ci darà la prima occorrenza del element
che stiamo cercando:
my_list = first_occurrence = my_list.index('b')print("First occurrence of 'b' in the list: ", first_occurrence)
Che ci darà l’output previsto:
First occurrence of 'b' in the list: 1
Trovare tutte le occorrenze di un elemento
Per trovare tutte le occorrenze di un elemento, possiamo usare il parametro opzionale start
in modo da cercare solo in certi segmenti della lista.
Per esempio, diciamo che avremmo la prima occorrenza di un elemento all’indice 3
. Per trovare il prossimo, avremmo bisogno di continuare la nostra ricerca per la prima apparizione di quell’elemento dopo l’indice 3
. Ripeteremmo questo processo, cambiando il punto di inizio della nostra ricerca, fino a quando troviamo nuove occorrenze dell’elemento:
Eseguendo questo codice otterremmo:
The element was found at:
Abbiamo dovuto usare un blocco try
qui, poiché la funzione index()
lancia un errore quando non riesce a trovare il element
specificato nell’intervallo dato. Questo potrebbe essere insolito per gli sviluppatori che sono più abituati ad altri linguaggi poiché funzioni come queste di solito restituiscono -1
null
quando l’elemento non può essere trovato.
Tuttavia, in Python dobbiamo stare attenti e usare un blocco try
quando usiamo questa funzione.
Un altro modo più pulito di fare la stessa cosa sarebbe usare la comprensione della lista e ignorare del tutto la funzione index()
:
Che ci darebbe lo stesso risultato di prima. Questo approccio ha l’ulteriore vantaggio di non usare il blocco try
.
Trovare l’ultima occorrenza di un elemento
Se avete bisogno di trovare l’ultima occorrenza di un elemento nella lista, ci sono due approcci che potete usare con la funzione index()
:
- Invertire la lista e cercare la prima occorrenza nella lista invertita
- Passare attraverso tutte le occorrenze dell’elemento, e tenere traccia solo dell’ultima occorrenza
Per quanto riguarda il primo approccio, se conosciamo la prima occorrenza del element
in una lista invertita, potremmo trovare la posizione dell’ultima occorrenza in quella originale. Più precisamente, possiamo farlo sottraendo reversed_list_index - 1
dalla lunghezza della lista originale:
Che ci darebbe l’output desiderato:
6
Per quanto riguarda il secondo approccio, potremmo modificare il codice che abbiamo usato per trovare tutte le occorrenze e tenere traccia solo dell’ultima occorrenza trovata:
Che ci darebbe lo stesso risultato: