Vai al contenuto principale

Metodo index() delle liste in Python spiegato con esempi

Impara a usare la funzione index() di Python per trovare la posizione degli elementi nelle liste.
Aggiornato 3 giu 2026  · 6 min leggi

In Python, una struttura dati ti aiuta a organizzare e archiviare i dati in modo efficiente. Una struttura comune e versatile è la lista, che può contenere diversi tipi di dati in un ordine specifico. Python fornisce anche molte funzioni o metodi per lavorare con le liste.

In questo tutorial, imparerai la funzione index() di Python. Il metodo index() cerca un elemento nella lista e ne restituisce la posizione/indice. Per prima cosa, questo tutorial ti introdurrà alle liste, poi vedrai alcuni semplici esempi su come lavorare con la funzione index().

Per eseguire facilmente tu stesso tutto il codice di esempio in questo tutorial, puoi creare gratuitamente un workbook DataLab con Python preinstallato e contenente tutti gli esempi di codice.

Che cos'è l'indexing in Python?

In Python, indexing indica il processo di accesso a un elemento specifico in una sequenza, come una stringa o una lista, usando la sua posizione o numero di indice. L'indicizzazione in Python parte da 0, il che significa che il primo elemento di una sequenza ha indice 0, il secondo ha indice 1 e così via. Ad esempio, se abbiamo la stringa "Hello", possiamo accedere alla prima lettera "H" usando l'indice 0 con la notazione tra parentesi quadre: string[0].

La funzione integrata di Python index() è utile per trovare l'indice di un elemento specifico in una sequenza. Questa funzione accetta un argomento che rappresenta il valore da cercare e restituisce l'indice della prima occorrenza di quel valore nella sequenza.

Se il valore non viene trovato nella sequenza, la funzione solleva un ValueError. Ad esempio, se abbiamo una lista [1, 2, 3, 4, 5], possiamo trovare l'indice del valore 3 chiamando list.index(3), che restituirà il valore 2 (dato che 3 è il terzo elemento della lista e l'indicizzazione parte da 0).

La funzione index() è uno strumento potente in Python perché semplifica la ricerca dell'indice di un elemento in una sequenza, eliminando la necessità di scrivere loop o istruzioni condizionali. Questa funzione è particolarmente utile quando si lavora con dataset di grandi dimensioni o strutture complesse, dove la ricerca manuale potrebbe richiedere molto tempo ed essere soggetta a errori.

Che cos'è la funzione index()?

Il metodo index() restituisce l'indice più basso nella lista in cui compare l'elemento cercato.

Proviamolo:

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 3
print(list_numbers.index(element)) # 2

Se si cerca un elemento che non è presente, viene generato un ValueError.

list_numbers = [4, 5, 6, 7, 8, 9, 10]
element = 3 # Not in the list
print(list_numbers.index(element)) # Throws a ValueError

Lavorare con le stringhe

Proviamo con elementi stringa:

list_numbers = [1, 'two', 3, 4, 5, 6, 7, 8, 9, 10]
element = 'two'
print(list_numbers.index(element)) # 1

Nota: Quando cerchi stringhe, index() fa distinzione tra maiuscole e minuscole. Ad esempio, 'Hello'.index('h') solleverà un ValueError.

Trovare la prima occorrenza

Immagina di avere più istanze di un elemento: in tal caso, index() ti restituirà la prima posizione in cui l'elemento compare.

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
element = 3
print(list_numbers.index(element)) # 0

La posizione restituita è 0, perché 3 compare per la prima volta in prima posizione, cioè all'indice 0 in Python.

Ecco cosa succede internamente: l'indice scorre tutti i valori a partire dalla prima posizione (indice 0), cercando l'elemento che stai cercando. Quando trova il valore, ne restituisce la posizione ed esce. Tuttavia, questo non è molto efficiente quando si scorre una lista grande e ti serve la posizione di qualcosa verso la fine.

Uso dei parametri start e stop

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
print(list_numbers.index(element, 5, 8)) # 6

Quindi la sintassi è: list_name.index(element, start, stop).

Qui i valori start e stop sono opzionali. In effetti, usali solo quando sei del tutto sicuro dell'intervallo; altrimenti otterrai un ValueError, come mostrato sotto.

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
print(list_numbers.index(element, 1, 5)) # Throws a ValueError

Trovare tutte le occorrenze

Poiché index() restituisce solo la prima corrispondenza di un oggetto, puoi usare una list comprehension, o un'espressione generatrice, se ti servono le posizioni di più corrispondenze nella lista. Ecco come:

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]

# List comprehension
print([i for i, n in enumerate(list_numbers) if n == 3]) # [0, 3, 4, 8]
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
g = (i for i, n in enumerate(list_numbers) if n == 3) # Generator expression

print("Generators store values, the first value here is:", next(g), ". Then the next is:", next(g), "followed by ", next(g),"and finally ", next(g))

# Generators store values, the first value here is: 0. Then the next is: 3 followed by  4 and finally  8

I generatori sono efficienti in termini di memoria perché producono gli elementi uno alla volta invece di memorizzare tutti i risultati come fanno le list comprehension.

Considerazioni finali

Complimenti, hai appena imparato la funzione index() in Python! Hai visto come può aiutarti a lavorare con le liste. Sei stato anche introdotto ad alcuni concetti nuovi. Per approfondire le list comprehension, dai un'occhiata al tutorial di DataCamp Python List Comprehension. Il Python Iterator Tutorial di DataCamp approfondisce generatori ed espressioni generatrici.


Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

Ho lavorato in diversi settori e ho ricoperto vari ruoli: sviluppatore software, ricercatore di machine learning, data scientist, product manager. Ma, soprattutto, sono un programmatore a cui piace imparare e condividere conoscenza!

FAQs

Cosa succede se più valori corrispondono all'elemento che sto cercando?

Il metodo index() restituisce solo l'indice della prima occorrenza dell'elemento corrispondente. Se ti servono tutte le posizioni, usa una list comprehension con enumerate().

Posso usare index() con tuple o stringhe?

Sì! Il metodo index() funziona con qualsiasi tipo di sequenza, incluse tuple e stringhe:

my_tuple = (1, 2, 3, 2)
print(my_tuple.index(2))  # Output: 1

text = "hello world"
print(text.index('o'))    # Output: 4

C'è un modo per gestire ValueError in modo elegante?

Sì, incapsula la chiamata a index() in un blocco try...except per evitare arresti se l'elemento non viene trovato:

my_list = [1, 2, 3]
try:
    print(my_list.index(4))
except ValueError:
    print("Element not found.")

Come posso cercare dalla fine della lista?

Il metodo index() non supporta la ricerca al contrario. Per trovare l'ultima occorrenza, inverti manualmente la lista o usa una comprehension:

my_list = [1, 2, 3, 2, 1]
last_index = len(my_list) - 1 - my_list[::-1].index(2)
print(last_index)  # Output: 3

In cosa index() è diverso da find()?

Il metodo find() si usa con le stringhe e restituisce -1 invece di sollevare un errore quando il valore non viene trovato. Le liste non hanno un metodo find().

text = "hello"
print(text.find('e'))  # Output: 1
print(text.find('z'))  # Output: -1

Posso usare index() con liste annidate?

Sì, ma solo al livello superiore. index() non cerca all'interno di strutture annidate.

nested_list = [[1, 2], [3, 4]]
print(nested_list.index([3, 4]))  # Output: 1
# This won't work: nested_list.index(3)

Cos'è l'errore "list index out of range"?

L'errore "list index out of range" si verifica quando provi ad accedere a un indice fuori dall'intervallo degli indici validi per una lista. Ad esempio, se una lista ha 5 elementi, gli indici validi sono da 0 a 4. Se provi ad accedere a un indice maggiore o uguale a 5, otterrai questo errore.

Per evitare l'errore "list index out of range", assicurati che l'indice a cui stai tentando di accedere rientri nell'intervallo degli indici validi per la lista. Puoi usare la funzione len() per ottenere la lunghezza di una lista e verificare se un indice è valido.

Cos'è l'errore "list indices must be integers"?

L'errore "list indices must be integers" si verifica quando provi a usare un valore non intero come indice di una lista. Ad esempio, se provi a usare un numero in virgola mobile o una stringa come indice di una lista, otterrai questo errore.

Per evitare l'errore "list indices must be integers", assicurati di usare un valore intero come indice della lista. Se ti serve usare un valore non intero come indice, puoi convertirlo in intero usando la funzione int().

Argomenti

Scopri di più su Python con questi corsi!

Corso

Introduzione a Python

4 h
6.9M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro