W3docs

Accedere agli Elementi di una Lista in Python

Impara ad accedere agli elementi di una lista Python con indici positivi e negativi, slicing con step, liste annidate e il metodo index() con esempi chiari.

Una lista Python è una sequenza ordinata e mutabile che può contenere elementi di qualsiasi tipo. Poiché le liste sono ordinate, ogni elemento ha una posizione numerica fissa — chiamata indice — che puoi usare per leggere, aggiornare o suddividere i dati.

Questo capitolo tratta:

  • Indicizzazione positiva e negativa
  • Slicing (start, stop, step)
  • Verificare l'appartenenza con in
  • Trovare le posizioni con index()
  • Accedere agli elementi in liste annidate

Per modificare le liste consulta Modificare gli Elementi di una Lista, Aggiungere Elementi a una Lista e Rimuovere Elementi da una Lista.

Indicizzazione Positiva

Python usa l'indicizzazione a base zero: il primo elemento si trova all'indice 0, il secondo all'indice 1 e così via.

Index:   0        1         2         3        4
         ↓        ↓         ↓         ↓        ↓
fruits = ["apple","banana","cherry","durian","elderberry"]

Usa le parentesi quadre [] per recuperare un elemento tramite il suo indice:

python— editable, runs on the server

Richiedere un indice che non esiste genera un IndexError:

fruits = ["apple", "banana", "cherry"]
print(fruits[10])  # IndexError: list index out of range

Controlla sempre len(list) - 1 per trovare il limite superiore valido, oppure usa un blocco try/except quando la lunghezza è incerta.

Indicizzazione Negativa

Gli indici negativi contano a ritroso dalla fine della lista. L'indice -1 è l'ultimo elemento, -2 è il penultimo e così via.

Index:    -5       -4        -3        -2       -1
          ↓        ↓         ↓         ↓        ↓
fruits = ["apple","banana","cherry","durian","elderberry"]
python— editable, runs on the server

L'indicizzazione negativa è particolarmente utile quando si ha bisogno dell'ultimo elemento di una lista di cui non si conosce la lunghezza.

Slicing delle Liste

Uno slice estrae una sotto-lista usando la sintassi list[start:stop]. L'indice start è incluso; l'indice stop è escluso.

python— editable, runs on the server

Lo slicing non genera mai un IndexError — Python limita automaticamente i limiti fuori intervallo:

fruits = ["apple", "banana", "cherry"]
print(fruits[1:100])   # ['banana', 'cherry'] — no error

Slicing con Step

Un terzo parametro — lo step — controlla quanti elementi saltare tra ogni selezione: list[start:stop:step].

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[0:9:2])   # [0, 2, 4, 6, 8]  — every second item
print(numbers[::3])     # [0, 3, 6, 9]      — every third item
print(numbers[::-1])    # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]  — reversed

Uno step negativo inverte la direzione, quindi list[::-1] è il modo idiomatico per invertire una lista senza modificarla in loco.

Slicing con Indici Negativi

Gli indici negativi funzionano anche negli slice:

fruits = ["apple", "banana", "cherry", "durian", "elderberry"]

print(fruits[-3:])     # ['cherry', 'durian', 'elderberry']  — last 3
print(fruits[-4:-1])   # ['banana', 'cherry', 'durian']

Verificare se un Elemento Esiste

Usa l'operatore in per verificare l'appartenenza senza conoscere l'indice:

fruits = ["apple", "banana", "cherry", "durian", "elderberry"]

print("banana" in fruits)    # True
print("mango" in fruits)     # False
print("mango" not in fruits) # True

Questo è più pulito che iterare manualmente ed è il modello preferito per i controlli di esistenza.

Trovare l'Indice di un Elemento

Il metodo index() restituisce la posizione della prima occorrenza di un valore:

fruits = ["apple", "banana", "cherry", "banana", "elderberry"]

print(fruits.index("banana"))     # 1 — first occurrence
print(fruits.index("elderberry")) # 4

index() genera un ValueError se il valore non viene trovato. Proteggi con in prima:

fruits = ["apple", "banana", "cherry"]

target = "mango"
if target in fruits:
    print(fruits.index(target))
else:
    print(f"{target!r} is not in the list")

Puoi anche limitare la ricerca a un intervallo usando index(value, start, stop):

fruits = ["apple", "banana", "cherry", "banana", "elderberry"]

# Find 'banana' starting from index 2 (skips the first occurrence)
print(fruits.index("banana", 2))  # 3

Accedere agli Elementi in Liste Annidate

Una lista può contenere altre liste come elementi. Accedi agli elementi annidati concatenando le parentesi degli indici:

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

print(matrix[0])       # [1, 2, 3]   — first row
print(matrix[1][2])    # 6           — row 1, column 2
print(matrix[-1][-1])  # 9           — last row, last column

La stessa sintassi di slicing si applica alle liste annidate:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[0][1:])   # [2, 3]

Riferimento Rapido

SintassiDescrizione
lst[i]Elemento all'indice i (base 0)
lst[-i]Elemento i posizioni dalla fine
lst[a:b]Slice da a (incluso) a b (escluso)
lst[a:b:s]Slice con step s
lst[::-1]Copia invertita della lista
x in lstTrue se x è presente
lst.index(x)Primo indice di x

Capitoli Correlati

Esercitati

Pratica
Which of the following ways can be used to access list items in Python?
Which of the following ways can be used to access list items in Python?
Was this page helpful?