Salta ai contenuti
Manuale LogoManuale Logo

Liste

Una lista Python può ricordare una lista della spesa: contiene elementi in sequenza e puoi aggiungerli, rimuoverli o sostituirli.

Una lista è una raccolta ordinata di elementi. Può contenere valori di tipo diverso e può essere modificata dopo la creazione.

Le liste si scrivono con le parentesi quadre [], con gli elementi separati da virgole:

frutta = ["mela", "banana", "ciliegia"]
numeri = [1, 2, 3, 4, 5]
mista = [1, "ciao", True, 3.14] # anche tipi diversi vanno bene
vuota = [] # lista senza elementi

Ogni elemento ha una posizione, chiamata indice, che parte da 0.

frutta = ["mela", "banana", "ciliegia"]
print(frutta[0]) # mela: il primo elemento
print(frutta[1]) # banana: il secondo
print(frutta[-1]) # ciliegia: l'ultimo (conta dalla fine)
print(frutta[-2]) # banana: il penultimo

Puoi estrarre una parte della lista indicando l’indice iniziale e quello finale:

numeri = [0, 1, 2, 3, 4, 5]
print(numeri[1:4]) # [1, 2, 3]: dalla posizione 1 alla 3 (4 esclusa)
print(numeri[:3]) # [0, 1, 2]: dall'inizio alla posizione 2
print(numeri[3:]) # [3, 4, 5]: dalla posizione 3 alla fine
print(numeri[::-1]) # [5, 4, 3, 2, 1, 0]: la lista al contrario

A differenza delle tuple, le liste si possono modificare:

frutta = ["mela", "banana", "ciliegia"]
frutta[1] = "kiwi" # sostituisce "banana" con "kiwi"
print(frutta) # ['mela', 'kiwi', 'ciliegia']

Puoi aggiungere elementi in tre modi, a seconda della posizione e del numero di elementi:

frutta = ["mela", "banana"]
frutta.append("ciliegia") # aggiunge alla fine
print(frutta) # ['mela', 'banana', 'ciliegia']
frutta.insert(1, "kiwi") # inserisce nella posizione 1
print(frutta) # ['mela', 'kiwi', 'banana', 'ciliegia']
altra = ["uva", "pesca"]
frutta.extend(altra) # aggiunge tutti gli elementi di un'altra lista
print(frutta) # ['mela', 'kiwi', 'banana', 'ciliegia', 'uva', 'pesca']

Per rimuovere un elemento puoi indicare il valore oppure la posizione:

frutta = ["mela", "banana", "ciliegia", "banana"]
frutta.remove("banana") # rimuove la prima "banana" che trova
print(frutta) # ['mela', 'ciliegia', 'banana']
frutta.pop() # rimuove e restituisce l'ultimo elemento
print(frutta) # ['mela', 'ciliegia']
frutta = ["mela", "banana", "ciliegia"]
del frutta[1] # elimina l'elemento in posizione 1
print(frutta) # ['mela', 'ciliegia']
frutta.clear() # svuota completamente la lista
print(frutta) # []
numeri = [1, 2, 3, 2, 4, 2]
print(numeri.count(2)) # 3: quante volte compare il numero 2
print(numeri.index(3)) # 2: in quale posizione si trova il numero 3
print(len(numeri)) # 6: quanti elementi ha la lista
numeri = [3, 1, 4, 1, 5, 9, 2]
numeri.sort() # ordina la lista (modifica l'originale)
print(numeri) # [1, 1, 2, 3, 4, 5, 9]
numeri.sort(reverse=True) # ordine decrescente
print(numeri) # [9, 5, 4, 3, 2, 1, 1]
# sorted() non modifica l'originale, restituisce una nuova lista
originale = [3, 1, 4, 1, 5]
ordinata = sorted(originale)
print(originale) # [3, 1, 4, 1, 5]: invariata
print(ordinata) # [1, 1, 3, 4, 5]: nuova lista ordinata

Se scrivi copia = originale, non ottieni una nuova lista: crei un secondo nome per la stessa lista. Per una copia separata usa .copy():

originale = [1, 2, 3]
copia = originale.copy() # copia vera e propria
copia.append(4)
print(originale) # [1, 2, 3]: non cambiata
print(copia) # [1, 2, 3, 4]: modificata

Le liste possono contenere altre liste, una forma utile per rappresentare griglie e tabelle:

matrice = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrice[1][2]) # 6: seconda riga, terza colonna