
Gli insiemi immutabili (frozenset) in Python
In questa lezione vediamo come si crea un insieme immutabile nel linguaggio Python
Cos'è un insieme immutabile? Un insieme che non può essere modificato è chiamato "insieme immutabile" o "insieme costante". E' un insieme di elementi che non può essere modificato, non è possibile né aggiungere nuovi elementi, né rimuovere elementi esistenti. Ad esempio, l'insieme vuoto è un insieme immutabile, perché non è possibile inserire o togliere elementi dall'insieme.
In Python puoi creare un insieme immutabile tramite la funzione frozenset
frozenset(x)
Il parametro x è un insieme di elementi.
Ti faccio un esempio pratico.
Crea un insieme immutabile nella variabili A usando la funzione frozenset()
>>> A=frozenset([2,4,8,10])
Una volta creato, non puoi aggiungere nuovi elementi all'insieme A, né eliminare uno degli elementi appartenenti all'insieme A.
Se ci provi Python restituisce un messaggio di errore.
>>> A.add(12)
AttributeError: 'frozenset' object has no attribute 'add'
Puoi comunque utilizzare l'insieme frozenset nelle operazioni di unione, intersezione, differenza con gli insiemi di tipo set.
Ad esempio, crea due insiemi
>>> A=frozenset([2,4,8,10])
>>> B=set([1,3,5,7,9])
Ora unisci i due insiemi tramite l'operatore A|B dell'unione di insiemi
>>> C=A|B
Il risultato è un nuovo insieme C di tipo frozenset ossia immutabile.
>>>C
frozenset({1, 2, 3, 4, 5, 7, 8, 9, 10})
Quest'ultimo è un insieme di tipo frozenset
>>> type(C)
<class 'frozenset'>
Per verificare se due insiemi frozenset sono disgiunti o meno puoi utilizzare i metodi isdisjoint(), issubset(), issuperset().
Ad esempio, crea questi due insiemi frozenset
>>> A=frozenset([1,2,3,4,5])
>>> B=frozenset([2,3])
Digita A.isdisjoint(B) per verificare se sono insiemi disgiunti.
In questo caso non sono insiemi disgiunti.
>>> A.isdisjoint(B)
False
Un'altra caratteristica è che gli oggetti frozenset possono essere contenuti dentro un insieme modificabile.
Ad esempio, crea due insiemi immodificabili (frozenset) nelle variabili A e B
>>> A=frozenset([2,4,8,10])
>>> B=frozenset([1,3,5,7,9])
Poi crea un insieme modificabile (set) che ha come elementi gli insiemi A e B
>>> C=set([A,B])
In questo caso Python non va in errore.
L'insieme C contiene al suo interno i due insiemi frozenset
{frozenset({1, 3, 5, 7, 9}), frozenset({8, 2, 10, 4})}
In altre parole, un insieme set non può contenere altri insiemi set al suo interno ma può contenere degli insiemi frozenset.