Le tuple sono sequenze simili alle liste, ma, a differenza delle liste, sono sequenze immutabili e non possono essere cambiate nel corso del programma. Contengono oggetti eterogenei, identificati da un indice numerico. Le tuple sono immutabili, ma i loro elementi, se sono mutabili, possono essere cambiati, per cui se un elemento di una tupla e' una lista questa puo' essere alterata e svuotata, ma non puo'essere tolta dalla tupla. Tuple che contengono solo oggetti immutabili possono essere usate come chiavi in un dizionario.
Le tuple sono rappresentate come insiemi di valori separati da virgole e racchiusi fra parentesi tonde; per il resto abbiamo operatori e notazioni analoghe a quelle delle liste, dei dizionari e delle stringhe:
Esempi:
T=(1,3.5,'c') : definisce una tupla di 3 elementi TT=() : e' una tupla vuota T[0]=33 : da errore, la tupla non e' mutabile T[1] : il secondo elemento ( nel nostro 3.5) len(T) : numero elementi T.index(3.5) : indice dell'elemento 3.5 ( e' al posto 1 )
L'operatore di somma: '+' concatena tuple in una nuova tupla, l'operatore: '*' ripete una tupla un certo numero di volte:
Esempio:
T3=(2,3) T4=(5,5) T5=T3+T4 T5 : e' la tupla: (2, 3, 5, 5) T6=T3*2 T6 : e' la tupla: (2, 3, 2, 3)
Tuple possono essere mutate in liste e viceversa:
L=list(T6) : muta la tupla in una lista: [2, 3, 2, 3] TT=tuple(L) : fa il contrario, muta una tupla in una lista.
C'e' un modulo aggiuntivo di Python (modulo "collections", introdotto nella versione 2.6) che introduce le "Named tuple": tuple indicizzabili per nome, tipo dizionari, oltre che per numero.
I sets sono stati introdotti con Python 2.4, e sono insiemi non ordinati, mutabili, di oggetti immutabili (numeri, caratteri, tuple , NON liste e dizionari ). Gli oggetti sono unici nel set (non ce ne sono 2 uguali). I set sono gli insiemi della matematica insiemistica e su di essi si possono fare operazioni di unione, intersezione, differenze etc.
In Python 3, ma non in Python 2, i set possono essere rappresentati da valori fra parentesi graffe, separati da virgole.
I frozensets sono analoghi ai sets ,ma immutabili.
Esempi:
a=set() : definisce set vuoto b={1,2,3} : definisce un set in Python 3 k= {'h','a','m'} : definisce un set in Python 3 c=set('fgh') : crea il set: {'h','g','f'} c=set('fghhh') : sempre {'h','g','f'} elementi non sono ripetuti. b=set(['a','b','c']) : set possono essere costruiti da liste d = b | c : set unione : set(['a', 'c', 'b', 'f']) e = d & b : set intersezione set(['a', 'c', 'b']) d - b : set differenza set(['f'])
La funzione add modifica un set aggiungendogli elementi, ma non si possono aggiungere liste al set, solo solo oggetti immutabili.
b.add('abc') : aggiunge i caratteri come elementi k.add((10,20,30)) : aggiunge una tupla
Esistono operatori: > < >= <= per individuare subset o superset; danno True o false
Esempio.:
a < b : vero se b contiene tutti gli elementi di a