Tuple
Tuple¶
Obiettivi della Lezione¶
Al termine di questa lezione, sarai in grado di:
- Comprendere cosa sono le tuple in Python e come differiscono dalle liste.
- Creare e utilizzare tuple nei tuoi programmi Python.
- Accedere agli elementi di una tupla e utilizzare lo slicing.
- Conoscere le operazioni fondamentali che possono essere eseguite sulle tuple.
- Comprendere l’immutabilità delle tuple e le sue implicazioni.
- Applicare le tuple in contesti pratici e riconoscere i casi d’uso più comuni.
Introduzione¶
Le tuple sono una delle strutture dati fondamentali in Python. Simili alle liste, le tuple consentono di memorizzare una sequenza ordinata di elementi. Tuttavia, a differenza delle liste, le tuple sono immutabili, il che significa che, una volta create, i loro elementi non possono essere modificati. Questa caratteristica le rende particolarmente utili quando si desidera garantire che i dati rimangano costanti nel tempo. In questa lezione, esploreremo le tuple in dettaglio, scoprendo come e quando utilizzarle efficacemente.
Spiegazione Teorica¶
Cosa sono le Tuples?¶
Una tupla è una collezione ordinata e immutabile di elementi. Può contenere elementi di qualsiasi tipo di dato: numeri, stringhe, liste, altre tuple, ecc. Le tuple sono definite utilizzando le parentesi tonde ()
e gli elementi sono separati da virgole.
Sintassi di base:
tupla = (elemento1, elemento2, elemento3, ...)
Esempi:
tupla_vuota = ()
tupla_numeri = (1, 2, 3)
tupla_mista = (1, "due", 3.0)
Caratteristiche Principali delle Tuples¶
- Ordinate: Gli elementi hanno un ordine definito e questo ordine non cambia.
- Immutabili: Una volta creata, non è possibile modificare, aggiungere o rimuovere elementi.
- Consentono duplicati: Possono contenere elementi duplicati.
Creare una Tupla¶
Anche se le parentesi tonde sono il modo più comune per definire una tupla, in realtà è la virgola a definire la tupla, non le parentesi. Le parentesi servono principalmente per rendere il codice più leggibile o per evitare ambiguità.
Esempi senza parentesi:
tupla = 1, 2, 3
print(tupla) # Output: (1, 2, 3)
(1, 2, 3)
Tupla con un Solo Elemento¶
Per creare una tupla con un solo elemento, è necessario aggiungere una virgola dopo l’elemento. Altrimenti, Python non riconoscerà l’oggetto come tupla.
Esempio:
tupla_singola = (5,)
print(type(tupla_singola)) # Output: <class 'tuple'>
non_tupla = (5)
print(type(non_tupla)) # Output: <class 'int'>
<class 'tuple'> <class 'int'>
# Creazione di una tupla
frutti = ('mela', 'banana', 'ciliegia')
# Accesso agli elementi tramite indice
print(frutti[0]) # Output: 'mela'
print(frutti[1]) # Output: 'banana'
print(frutti[2]) # Output: 'ciliegia'
mela banana ciliegia
2. Immutabilità delle Tuples¶
# Tentativo di modifica di un elemento
numeri = (1, 2, 3)
# numeri[0] = 10 # Questo genera un TypeError
# Output del TypeError:
# TypeError: 'tuple' object does not support item assignment
3. Operazioni con le Tuples¶
- Concatenazione
tupla1 = (1, 2, 3)
tupla2 = (4, 5, 6)
tupla_concatenata = tupla1 + tupla2
print(tupla_concatenata) # Output: (1, 2, 3, 4, 5, 6)
(1, 2, 3, 4, 5, 6)
- Ripetizione
tupla_replicata = ('Python',) * 3
print(tupla_replicata) # Output: ('Python', 'Python', 'Python')
('Python', 'Python', 'Python')
- Verifica dell’Appartenenza
tupla = ('a', 'b', 'c')
print('a' in tupla) # Output: True
print('d' not in tupla) # Output: True
True True
4. Slicing delle Tuples¶
tupla = (0, 1, 2, 3, 4, 5)
# Slicing [start:stop:step]
print(tupla[1:4]) # Output: (1, 2, 3)
print(tupla[:3]) # Output: (0, 1, 2)
print(tupla[::2]) # Output: (0, 2, 4)
(1, 2, 3) (0, 1, 2) (0, 2, 4)
5. Iterazione su una Tupla¶
tupla = ('rosso', 'verde', 'blu')
for colore in tupla:
print(colore)
# Output:
# rosso
# verde
# blu
rosso verde blu
6. Tuples Nidificate¶
tupla_nidificata = (1, (2, 3), 4)
print(tupla_nidificata[1]) # Output: (2, 3)
print(tupla_nidificata[1][0]) # Output: 2
(2, 3) 2
7. Uso delle Tuples come Chiavi di un Dizionario¶
# Le tuple possono essere usate come chiavi perché sono immutabili
coordinate = {}
punto = (10, 20)
coordinate[punto] = 'Il tesoro è qui'
print(coordinate) # Output: {(10, 20): "Qui c'è un tesoro"}
{(10, 20): 'Il tesoro è qui'}
giorni_settimana = ('Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato', 'Domenica')
print(giorni_settimana[0]) # Output: 'Lunedì'
print(giorni_settimana[-1]) # Output: 'Domenica'
Lunedì Domenica
</details>
Esercizio 2: Immutabilità delle Tuples¶
Prova a modificare il secondo elemento della tupla giorni_settimana
sostituendolo con 'Funday'
. Cosa succede?
Soluzione
# Tentativo di modifica
# giorni_settimana[1] = 'Funday' # Questo genera un TypeError
# Output del TypeError:
# TypeError: 'tuple' object does not support item assignment
Le tuple sono immutabili, quindi non è possibile modificare i loro elementi dopo la creazione. </details>
Esercizio 3: Concatenazione e Slicing¶
Crea due tuple: numeri_pari
contenente i numeri pari da 2 a 8 e numeri_dispari
contenente i numeri dispari da 1 a 9. Unisci le due tuple e stampa una sottotupla contenente i numeri dal 4 al 7.
Soluzione
numeri_pari = (2, 4, 6, 8)
numeri_dispari = (1, 3, 5, 7, 9)
numeri = numeri_pari + numeri_dispari
print(numeri) # Output: (2, 4, 6, 8, 1, 3, 5, 7, 9)
# Ordinare la tupla per eseguire lo slicing accuratamente
numeri_ordinati = tuple(sorted(numeri))
print(numeri_ordinati) # Output: (1, 2, 3, 4, 5, 6, 7, 8, 9)
sottotupla = numeri_ordinati[3:7]
print(sottotupla) # Output: (4, 5, 6, 7)
(2, 4, 6, 8, 1, 3, 5, 7, 9) (1, 2, 3, 4, 5, 6, 7, 8, 9) (4, 5, 6, 7)
Esercizio 4: Verifica dell’Appartenenza¶
Verifica se il colore 'verde'
è presente nella tupla colori = ('rosso', 'blu', 'giallo')
. Verifica anche se 'blu'
non è presente in colori
.
Soluzione
colori = ('rosso', 'blu', 'giallo')
print('verde' in colori) # Output: False
print('blu' not in colori) # Output: False (perché 'blu' è presente)
False False
Nota che 'blu' not in colori
restituisce False
perché 'blu'
è presente nella tupla.
</details>
Buone Pratiche e Consigli¶
Usa le Tuples per Dati Immutabili: Quando hai una collezione di dati che non dovrebbero cambiare durante l’esecuzione del programma, le tuple sono la scelta ideale.
Sostituisci le Definizioni Multiple con Tuples: Per assegnare valori a più variabili contemporaneamente, puoi usare le tuple.
x, y = (10, 20)
Utilizza le Tuples come Chiavi nei Dizionari: Poiché le tuple sono immutabili, possono essere usate come chiavi nei dizionari, a differenza delle liste.
Sfrutta l’Immutabilità per la Sicurezza: L’immutabilità delle tuple può evitare modifiche accidentali ai dati, migliorando la robustezza del tuo codice.
Conclusione¶
Le tuple sono uno strumento potente per la gestione di collezioni ordinate di dati immutabili in Python. Sebbene simili alle liste, la loro immutabilità le rende ideali in situazioni in cui la sicurezza e l’integrità dei dati sono fondamentali. Abbiamo esplorato come crearle, accedere ai loro elementi, e le varie operazioni che possiamo eseguire su di esse. Con una solida comprensione delle tuple, puoi scrivere codice Python più efficiente e sicuro.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Tuples and Sequences
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Lists, Tuples, and Sets