Home / Blog /

Python Tuple: cosa sono, come usarle ed esempi pratici

di Giuseppe Maggi

Quando si tratta di programmare in Python può capitare di doversi servire delle Tuple. Ma che cosa sono le tuple in Python? E come si usano?
Leggi tutto l’articolo per conoscere questo strumento di aggregazione dati.

Python tuple: di che cosa si tratta

Il linguaggio Python dispone di diverse strutture dati per poter gestire ogni possibile modello di aggregazione di informazioni.
Le tuple, di cui ci occuperemo oggi, sono molto comuni nella restituzione di valori e presentano due caratteristiche principali:

  1. sono elementi sequenziali costituiti da una concatenazione di valori di qualsiasi tipo, ognuno memorizzato per posizione. In virtù di quest’ultimo fattore, permettono la presenza di duplicati;
  2. non sono modificabili. Una volta che una tupla è stata inizializzata non se ne può più modificare il contenuto.
    Quest’ultimo aspetto è ciò che conferisce originalità alle tuple e non ne rappresenta affatto un limite ma più che altro un fattore di ottimizzazione.

Vediamo dunque come utilizzare le tuple in Python.

VUOI IMPARARE A PROGRAMMARE IN PYTHON?

Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 60 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂

VAI AI CORSI PYTHON

Come utilizzare le tuple in Python

Creare una struttura dati di questo tipo richiede esclusivamente l’elencazione dei suoi elementi all’interno di una coppia di parentesi tonde.
Lavorando dalla console interattiva di Python, creiamo una tupla che risponde al riferimento voti e contiene una serie di numeri:

>>> voti=(8,7,8,7,7,4,5,9,4,8,7,6,5,8)

Questo sarà il contenuto della tupla:

>>> voti
(8, 7, 8, 7, 7, 4, 5, 9, 4, 8, 7, 6, 5, 8)

Per sapere quanti elementi contiene effettivamente potremo utilizzare la funzione built-in len:

>>> len(voti)
14

La risposta ci informa che al suo interno ci sono quattordici elementi.
Il contenuto di una tupla può essere letto con due operazioni principali che, come in altre strutture dati Python, rispondono al nome di indexing e slicing.

Indexing e slicing in Python

Per indexing, si intende l’accesso ad un singolo elemento della tupla passandone la posizione tra parentesi quadre.
Chiariamo subito che, come spesso succede in programmazione, le posizioni sono contate a partire da 0 pertanto la tupla in questione che contiene quattordici elementi tollererà solo l’invocazione di una posizione compresa tra 0 e 13.
Chiediamo il sesto elemento (posizione cinque) e otteniamo così il valore 4:

>>> voti[5]
4

Le posizioni possono essere indicate anche con valori negativi. In questo caso, l’ultimo elemento della tupla sarà indicato con -1.
Prendiamo il penultimo elemento, ad esempio, usando la posizione -2:

>>> voti[-2]
5

Lo slicing permette di leggere un segmento di valori di una tupla, delimitato da due posizioni passate tra parentesi quadre e separate dal simbolo di due punti.
Il seguente comando:

>>> voti[3:-2]
restituisce:
(7, 7, 4, 5, 9, 4, 8, 7, 6)

Si ricordi però che mentre la prima posizione è inclusiva, la seconda è esclusiva: infatti, il codice ha restituito tutto ciò che è compreso tra la posizione 3 fino alla posizione -3 (precedente alla -2 indicata come secondo elemento di slicing).
Qualora non venisse indicata la prima posizione, la si considererebbe di default uguale a 0, mentre se mancasse la seconda lo slicing estrarrebbe fino all’ultimo elemento.

Vediamo un altro esempio in cui si mostra l’impiego di due posizioni con valore positivo. Recuperiamo tutto ciò che si trova tra la posizione 1 e la 5:

>>> voti[1:6]
(7, 8, 7, 7, 4)
VUOI IMPARARE A PROGRAMMARE IN PYTHON?

Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 60 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂

VAI AI CORSI PYTHON

I metodi delle tuple

Le tuple possiedono anche alcuni metodi. Il metodo count restituisce il numero di elementi corrispondenti al valore passato come argomento:

>>> voti.count(7)
4

Ciò significa che sono state trovate quattro istanze del valore 7 nella tupla.
Il metodo index restituisce la posizione della prima occorrenza dell’elemento passato come argomento. In questo caso, ci dice la posizione del primo valore pari a 7:

>>> voti.index(7)
1

Se a index passiamo due argomenti, il secondo rappresenta da quale posizione della tupla deve essere iniziata la ricerca. In questo caso, restituisce 10 perché è la posizione in cui trova il primo valore 7 dopo la posizione 5:

>>> voti.index(7, 5)
10

A dimostrazione del fatto che una tupla non è modificabile vediamo che in effetti provando a forzare un nuovo valore in posizione 1 otterremmo un errore il cui messaggio avviserebbe che un oggetto tupla non supporta l’operazione di assegnazione:

>>> voti[1]=99
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment

Tra le funzioni built-in, infine, esiste anche tuple che permette di trasformare altri oggetti in tuple.
Ad esempio, vediamo qui una lista che contiene alcuni elementi tutti modificabili e ciò è dimostrato dalla possibilità di assegnare il valore 999 alla posizione 3:

>>> lista=[4,5,6,7,8,9]
>>> lista[3]=999
>>> lista
[4, 5, 6, 999, 8, 9]

Con tuple possiamo chiedere di inizializzare una tupla con gli oggetti presenti nella lista ottenendo così una reale tupla, tanto che non potremo più assegnare alcun valore al suo interno.

>>> t=tuple(lista)
>>> t
(4, 5, 6, 999, 8, 9)
>>> t[2]=1000
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment

Per concludere, possiamo affermare che l’uso della tupla in Python è utile in tutti quei casi in cui si necessita che l’algoritmo occupi uno spazio di memoria molto basso e con una velocità di elaborazione molto alta (mentre, al contrario le liste in Python richiedono un processo di elaborazione maggiore).

VUOI IMPARARE A PROGRAMMARE IN PYTHON?

Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂

VAI AI CORSI PYTHON