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 start0 (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 -1null 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:

Lascia un commento

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