Trova l'indice di un elemento in una lista in Python

Rayven Esplanada 30 gennaio 2023
  1. Usa il metodo List index() per trovare l’indice di una lista in Python
  2. Usa numpy.where() per trovare l’indice di una lista in Python
Trova l'indice di un elemento in una lista in Python

Questo tutorial dimostrerà come trovare la posizione o l’indice di un elemento in una lista Python.

Usa il metodo List index() per trovare l’indice di una lista in Python

La lista di Python ha un metodo incorporato chiamato index(), che accetta un singolo parametro che rappresenta il valore da cercare all’interno della lista esistente. La funzione restituisce l’indice della prima occorrenza che trova a partire dall’indice 0 indipendentemente da quante volte ricorre all’interno della lista.

Ad esempio, dichiara una lista con un valore ripetuto di 20 e chiama la funzione index(20) e stampa ciò che restituisce.

lst = [13, 4, 20, 15, 6, 20, 20]

print(lst.index(20))

Produzione:

2

La prima occorrenza del valore 20 trovato all’interno dell’array lst era sull’indice 2, che è il risultato della chiamata alla funzione. Gli altri elementi con lo stesso valore vengono ignorati poiché ha già trovato una corrispondenza all’interno dell’lista.

Cosa succede quando un valore non esiste all’interno della lista data e chiamiamo index() passando il valore inesistente? Prendiamo questo per esempio.

lst = [13, 4, 20, 15, 6, 20, 20]

print(lst.index(21))

Produzione:

ValueError: 21 is not in list

La funzione genererà un errore se l’indice non viene trovato nell’lista. In alcuni casi, potrebbe essere sfavorevole invocare un errore. Per evitarlo, cattura l’errore con un blocco try...except e fai in modo che se l’indice non esiste all’interno della lista, lo assegni come -1.

lst = [13, 4, 20, 15, 6, 20, 20]

try:
    ndx = lst.index(21)
except:
    ndx = -1

print(ndx)

Produzione:

-1

In questo modo, non sarà necessario invocare un errore esplicito e il programma può continuare a funzionare dopo l’operazione.

Usa numpy.where() per trovare l’indice di una lista in Python

Il modulo NumPy ha una funzione predefinita chiamata where() che si occupa di localizzare più elementi all’interno di una lista e accetta una condizione.

In questo caso, useremo esclusivamente where() per localizzare gli indici di un dato valore. A differenza della funzione incorporata index(), la funzione where() può restituire una lista di indici in cui si trova il valore se esiste più di una volta all’interno di una lista. Questo è utile se hai bisogno di tutte le occorrenze del valore invece che solo della prima occorrenza.

Il primo passo è convertire una lista Python in un array NumPy. Per fare questo, chiama la funzione np.array().

import numpy as np

lst = np.array(lst=[13, 4, 20, 15, 6, 20, 20])

Dopo aver inizializzato l’array NumPy, dobbiamo solo riempire il primo parametro di where(). Inizializza il primo parametro come lst == 20 per individuare gli indici della lista data con il valore 20.

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result)

Produzione:

(array([2, 5, 6]),)

Poiché NumPy si occupa principalmente di matrici, la funzione where() restituisce una tupla di array invece di una singola lista. Se si preferisce l’output solo dell’lista singolo, chiamare il primo indice del risultato e visualizzarlo utilizzando print().

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result[0])

Produzione:

[2 5 6]

Nota che gli array NumPy sono delimitati da un singolo spazio bianco invece delle normali virgole.

In sintesi, la funzione index() è il modo più semplice per trovare la posizione di un elemento all’interno di una lista Python. Tuttavia, questa funzione restituisce solo l’indice della prima occorrenza del valore dato.

Per restituire più indici se esistono più istanze del valore, puoi scegliere di utilizzare la funzione where() nel modulo NumPy.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Articolo correlato - Python List