Python la struttura dati Tupla
Autore:[Antonio Gallonetto]
Una tupla è una struttura dati molto simile alle liste, soltanto che il contenuto è immutabile.
Le tuple sono immutabili
Il contenuto delle tuple non si può modificare e nemmeno la dimensione della tupla.
Tipi all’interno della tupla
I tipi all’interno della tupla possono essere eterogenei, possiamo avere valori, stringhe, tuple ecc.
Sintassi della dichiarazione di una tupla
nomeTupla=(elemento1,elemento2,..,elementon)
- Tupla vuota
nomeTupla=()
- Tupla con un solo elemento
nomeTupla=(elemento1,)
notare la virgola dopo l’elemento 1
Operazioni sulle tuple
- slicing
- count()
- index()
- len()
Slicing di una tupla
Per slicing si intende estrarre degli elementi da una tupla.
nomeTupla[start:stop:step]
- se start non è indicato si parte dall’elemento 0
- se stop non è indicato si intende l’ultimo elemento
- se step non è indicato si intende 1
- il valore di stop non è conteggiato
- il valore di ritorno dello slicing è una tupla
Esempio di slicing
listaValori=(10,20,30,40,50)
nuovaLista=listaValori[0:1]
print(nuovaLista) ## risultato (10,)
##
nuovaLista=nuovaLista=listaValori[0:len(listaValori)-2]
print(nuovaLista) ## risultato (10, 20, 30)
In questo esempio potrebbe sembrare che ci sia una incoerenza con l’immutabilità della tupla, perché andiamo ad assegnare uno slicing ad una tupla già usata, nel caso dell’assegnamento si elimina il contenuto della tupla precedente e si assegna il valore dello slicing.
count()
Conta le occorrenze di un certo elemento nella tupla
Sintassi di count()
nomeLista.count(elemento)
Esempio
listaValori=(10,20,30,40,50,10,80,30,10,20,30,10)
numOccorrenze=listaValori.count(10)
print(numOccorrenze) ## risultato è 4
index()
index ritorna il valore dell’indice della prima occorrenza di un elemento all’interno della tupla
Sintassi
nomeTupla.index(elemento)
Esempio
listaValori=(10,20,30,40,50,10,80,30,10,20,30,10)
posVal10=listaValori.index(10)
print(posVal10) ## risultato è 0 perchè è il primo elemento
Un esempio nel quale prendo in considerazione una sottostringa
listaValori=(10,20,30,40,50,10,80,30,10,20,30,10)
posVal10=listaValori[2:].index(10) ## prendo in considerazione (30, 40, 50, 10, 80, 30, 10, 20, 30, 10)
print(posVal10) ## risultato è 3
len()
len() restituisce la lunghezza della tupla
Sintassi
dimTupla=len(nomeTupla)
dove dimTupla è un valore intero che indica la dimensione della tupla
Esempio
listaValori=(10,20,30,40,50,10,80,30,10,20,30,10)
print(len(listaValori[0:])) ## risultato 12
print(len(listaValori[1:])) ## risultato 11
print(len(listaValori[2:])) ## risultato 10
Assegnamento
Possiamo assegnare una tupla ad un altra tupla in questo modo:
tuplaA=tuplaB
oppure ad una qualsiasi altra struttura dati.
Esempio di assegnamento
tuplaA=("prova1","prova2",1)
tuplaB=("A1",)
print(tuplaA) ## ris ('prova1', 'prova2', 1)
print(tuplaB) ## ris ('A1',)
tuplaB=tuplaA
print(tuplaB) ## ris ('prova1', 'prova2', 1)