Liste
Lezione: Liste in Python¶
Obiettivi della Lezione¶
Al termine di questa lezione, sarai in grado di:
- Comprendere cosa sono le liste in Python e come vengono utilizzate.
- Creare e inizializzare liste con diversi tipi di dati.
- Accedere e modificare elementi all’interno delle liste.
- Utilizzare metodi comuni per aggiungere, rimuovere e manipolare elementi.
- Applicare tecniche di slicing per ottenere sottoliste.
- Implementare metodi per ordinare e contare elementi nelle liste.
Introduzione¶
Le liste sono una delle strutture dati più versatili e utilizzate in Python. Consentono di raccogliere un insieme ordinato di elementi, che possono essere di tipi diversi, in un’unica variabile. Grazie alla loro flessibilità, le liste sono fondamentali per la gestione di dati dinamici, l’iterazione e la manipolazione di collezioni di elementi.
Spiegazione Teorica¶
Cosa sono le Liste?¶
Le liste in Python sono sequenze ordinate e modificabili di elementi racchiusi tra parentesi quadre [ ]
. A differenza di alcune altre lingue di programmazione, gli elementi all’interno di una lista possono essere di tipi diversi.
Sintassi di base:
nome_lista = [elemento1, elemento2, elemento3, ...]
Esempi:
- Lista di numeri interi:
[1, 2, 3, 4, 5]
- Lista di stringhe:
["rosso", "verde", "blu"]
- Lista mista:
[True, 3.14, "Python"]
Caratteristiche delle Liste¶
- Ordinata: Gli elementi hanno un ordine specifico che rimane costante a meno che non venga modificato esplicitamente.
- Indicizzabile: Ogni elemento ha un indice che inizia da 0.
- Modificabile (Mutable): Gli elementi possono essere aggiunti, rimossi o modificati dopo la creazione della lista.
- Permette Duplicati: Le liste possono contenere elementi duplicati.
Creazione di una Lista¶
Lista vuota:
lista_vuota = []
Lista con elementi:
frutti = ["mela", "banana", "ciliegia"]
numeri = [1, 2, 3, 4, 5]
miscellanea = [True, 42, "Python"]
Accesso agli Elementi¶
Gli elementi di una lista possono essere acceduti utilizzando gli indici:
print(frutti[0]) # Output: mela
print(frutti[2]) # Output: ciliegia
mela ciliegia
Indici negativi:
Gli indici negativi permettono di accedere agli elementi partendo dalla fine della lista:
print(frutti[-1]) # Output: ciliegia
print(frutti[-2]) # Output: banana
ciliegia banana
Modifica degli Elementi¶
È possibile modificare gli elementi assegnando un nuovo valore all’indice desiderato:
frutti[1] = "arancia"
print(frutti) # Output: ["mela", "arancia", "ciliegia"]
['mela', 'arancia', 'ciliegia']
Aggiunta di Elementi¶
append(): Aggiunge un elemento alla fine della lista.
frutti.append("kiwi")
insert(): Inserisce un elemento in una posizione specifica.
frutti.insert(1, "limone")
Rimozione di Elementi¶
remove(): Rimuove il primo elemento con il valore specificato.
frutti.remove("banana")
pop(): Rimuove l’elemento alla posizione specificata (se nessuna, rimuove l’ultimo).
frutti.pop(2) frutti.pop() # Rimuove l'ultimo elemento
del: Elimina l’elemento alla posizione specificata o l’intera lista.
del frutti[0] del frutti # Elimina l'intera lista
clear(): Rimuove tutti gli elementi dalla lista.
frutti.clear()
Slicing delle Liste¶
Lo slicing permette di ottenere una sottolista specificando gli indici di inizio e fine:
sottolista = frutti[1:3]
- sottolista contiene gli elementi dall’indice 1 all’indice 2 (il limite superiore è escluso).
Metodi Utili per le Liste¶
len(): Restituisce la lunghezza della lista.
print(len(frutti)) # Numero di elementi nella lista
sort(): Ordina gli elementi della lista.
numeri.sort()
reverse(): Inverte l’ordine degli elementi.
numeri.reverse()
count(): Conta quante volte un elemento appare nella lista.
occorrenze = frutti.count("mela")
copy(): Crea una copia della lista.
nuova_lista = frutti.copy()
Esempi Pratici di Codice¶
Esempio 1: Creazione e Accesso¶
# Creazione di una lista di colori
colori = ["rosso", "verde", "blu", "giallo"]
# Accesso al primo e all'ultimo elemento
print(colori[0]) # Output: rosso
print(colori[-1]) # Output: giallo
rosso giallo
Esempio 2: Modifica e Aggiunta¶
# Modifica del secondo elemento
colori[1] = "viola"
print(colori) # Output: ['rosso', 'viola', 'blu', 'giallo']
# Aggiunta di un nuovo colore alla fine
colori.append("arancione")
print(colori) # Output: ['rosso', 'viola', 'blu', 'giallo', 'arancione']
# Inserimento di un colore in seconda posizione
colori.insert(1, "bianco")
print(colori) # Output: ['rosso', 'bianco', 'viola', 'blu', 'giallo', 'arancione']
['rosso', 'viola', 'blu', 'giallo'] ['rosso', 'viola', 'blu', 'giallo', 'arancione'] ['rosso', 'bianco', 'viola', 'blu', 'giallo', 'arancione']
Esempio 3: Rimozione di Elementi¶
# Rimozione per valore
colori.remove("blu")
print(colori) # Output: ['rosso', 'bianco', 'viola', 'giallo', 'arancione']
# Rimozione per indice
colori.pop(2)
print(colori) # Output: ['rosso', 'bianco', 'giallo', 'arancione']
# Rimozione dell'ultimo elemento
colori.pop()
print(colori) # Output: ['rosso', 'bianco', 'giallo']
['rosso', 'bianco', 'viola', 'giallo', 'arancione'] ['rosso', 'bianco', 'giallo', 'arancione'] ['rosso', 'bianco', 'giallo']
Esempio 4: Slicing¶
numeri = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Sottolista dei numeri da indice 2 a 5 (esclusivo)
sub_numeri = numeri[2:5]
print(sub_numeri) # Output: [2, 3, 4]
# Sottolista dei primi 4 elementi
primi_quattro = numeri[:4]
print(primi_quattro) # Output: [0, 1, 2, 3]
# Sottolista degli ultimi 3 elementi
ultimi_tre = numeri[-3:]
print(ultimi_tre) # Output: [7, 8, 9]
[2, 3, 4] [0, 1, 2, 3] [7, 8, 9]
Esempio 5: Ordinamento e Conteggio¶
# Lista non ordinata
numeri_disordinati = [5, 2, 9, 1, 5, 6]
# Ordinamento crescente
numeri_disordinati.sort()
print(numeri_disordinati) # Output: [1, 2, 5, 5, 6, 9]
# Conteggio delle occorrenze del numero 5
conteggio_cinque = numeri_disordinati.count(5)
print(conteggio_cinque) # Output: 2
[1, 2, 5, 5, 6, 9] 2
animali = ["cane", "gatto", "coniglio"]
Esercizio 2: Accesso agli Elementi¶
Utilizza l’indice appropriato per stampare "gatto"
dalla lista animali
.
Soluzione:
print(animali[1]) # Output: gatto
gatto
Esercizio 3: Modifica di un Elemento¶
Cambia il valore "coniglio"
in "criceto"
nella lista animali
.
Soluzione:
animali[2] = "criceto"
print(animali) # Output: ['cane', 'gatto', 'criceto']
['cane', 'gatto', 'criceto']
animali.append("uccello")
print(animali) # Output: ['cane', 'gatto', 'criceto', 'uccello']
['cane', 'gatto', 'criceto', 'uccello']
Esercizio 5: Rimozione di un Elemento¶
Rimuovi "cane"
dalla lista animali
utilizzando il metodo appropriato.
Soluzione:
animali.remove("cane")
print(animali) # Output: ['gatto', 'criceto', 'uccello']
['gatto', 'criceto', 'uccello']
Esercizio 6: Slicing di una Lista¶
Dalla lista numeri = [10, 20, 30, 40, 50, 60, 70, 80]
, ottieni una sottolista che contenga [30, 40, 50]
.
Soluzione:
numeri = [10, 20, 30, 40, 50, 60, 70, 80]
sub_numeri = numeri[2:5]
print(sub_numeri) # Output: [30, 40, 50]
[30, 40, 50]
Esercizio 7: Ordinamento di una Lista¶
Dato numeri = [4, 2, 8, 1, 5]
, ordina la lista in ordine crescente.
Soluzione:
numeri = [4, 2, 8, 1, 5]
numeri.sort()
print(numeri) # Output: [1, 2, 4, 5, 8]
[1, 2, 4, 5, 8]
Buone Pratiche e Consigli¶
Usa nomi significativi: Assegna alle tue liste nomi che riflettano il loro contenuto per migliorare la leggibilità del codice.
studenti = ["Marco", "Giulia", "Luca"]
Attenzione agli indici fuori range: Assicurati che gli indici utilizzati siano validi per evitare errori di runtime.
Copiare Liste: Per creare una copia di una lista senza collegarla alla lista originale, usa il metodo
copy()
o lo slicing[:]
.lista_originale = [1, 2, 3] lista_copia = lista_originale.copy() # oppure lista_copia = lista_originale[:]
Evitare modifiche indesiderate: Quando passi una lista a una funzione, ricorda che le liste sono mutabili; eventuali modifiche nella funzione influenzeranno la lista originale.
Utilizza le liste in modo efficiente: Quando possibile, utilizza le comprensioni di lista per creare nuove liste in modo conciso.
quadrati = [x**2 for x in range(10)]
Conclusione¶
Le liste sono strumenti potenti e flessibili che ti permettono di gestire collezioni di dati in Python in modo efficiente. La comprensione approfondita delle operazioni sulle liste è fondamentale per la scrittura di codice Python robusto e leggibile. Continua a praticare le operazioni sulle liste per padroneggiare questa fondamentale struttura dati.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Sequence Types — list, tuple, range
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Lists, Tuples, and Sets