Tuple

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.

Sets e Frozensets

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 hashable (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