Trova tutti gli indici di un elemento in una lista in Python

Manav Narula 30 gennaio 2023
  1. Uso del cicli for per trovare gli indici di tutte le occorrenze di un elemento
  2. Usa la funzione numpy.where() per trovare gli indici di tutte le occorrenze di un elemento in Python
  3. Usa la funzione more_itertools.locate() per trovare gli indici di tutte le occorrenze di un elemento
Trova tutti gli indici di un elemento in una lista in Python

Una lista viene utilizzato in Python per memorizzare più elementi sotto un unico nome. È possibile accedere a ciascun elemento utilizzando la sua posizione nell’lista. Un elemento può essere presente in più posizioni in una lista.

In questo tutorial, introdurremo come trovare gli indici di tutte le occorrenze di un elemento specifico in una lista. Lavoreremo con il seguente lista e troveremo tutti gli indici dell’elemento 1.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

Uso del cicli for per trovare gli indici di tutte le occorrenze di un elemento

Possiamo facilmente scorrere l’lista e confrontare ogni elemento con l’elemento richiesto e trovarne gli indici. Possiamo memorizzare il risultato finale in un nuovo lista. Nell’esempio seguente, iteriamo sull’lista utilizzando la funzione range():

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = []
x = 1  # The required element

for i in range(len(l1)):
    if l1[i] == x:
        pos.append(i)
print(pos)

Produzione:

[0, 2, 8]

Un modo più efficiente e compatto per implementare il codice precedente consiste nell’usare la comprensione dell’lista seguente.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)

Produzione:

[0, 2, 8]

Allo stesso modo, possiamo anche usare la funzione enumerate(), che restituisce l’indice e il valore insieme. Per esempio:

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)

Produzione:

[0, 2, 8]

Usa la funzione numpy.where() per trovare gli indici di tutte le occorrenze di un elemento in Python

La libreria NumPy ha la funzione where(), che è usata per restituire gli indici di un elemento in un array in base a qualche condizione. Per questo metodo, dobbiamo passare l’lista come array. Anche il risultato finale è in un array. Il seguente frammento di codice mostra come possiamo utilizzare questo metodo:

import numpy as np

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = np.where(np.array(l1) == 1)[0]

print(pos)

Produzione:

[0 2 8]

Usa la funzione more_itertools.locate() per trovare gli indici di tutte le occorrenze di un elemento

Il more_itertools è un pratico modulo di terze parti. Ha molte funzioni che possono creare codice efficiente e compatto quando si lavora con gli iterabili. La funzione locate() in questo modulo restituisce gli indici degli elementi che sono True per la condizione. Restituisce un oggetto itertools. Il seguente frammento di codice spiega come possiamo utilizzare questo metodo:

from more_itertools import locate

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = list(locate(l1, lambda x: x == 1))

print(pos)

Produzione:

[0, 2, 8]

Usiamo la funzione list() per assicurarci che il risultato finale sia sotto forma di una lista.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Python List