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:
Richiedere un indice che non esiste genera un IndexError:
fruits = ["apple", "banana", "cherry"]
print(fruits[10]) # IndexError: list index out of rangeControlla 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"]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.
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 errorSlicing 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] — reversedUno 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) # TrueQuesto è 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")) # 4index() 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)) # 3Accedere 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 columnLa 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
| Sintassi | Descrizione |
|---|---|
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 lst | True se x è presente |
lst.index(x) | Primo indice di x |
Capitoli Correlati
- Liste Python — creazione, proprietà e panoramica delle liste
- Modificare gli Elementi di una Lista — aggiornare i valori per indice
- Aggiungere Elementi a una Lista —
append(),insert(),extend() - Rimuovere Elementi da una Lista —
remove(),pop(),del - Iterare le Liste — iterare su ogni elemento
- Metodi delle Liste — riferimento completo dei metodi
- List Comprehension — costruzione concisa di liste