I set e i frozenset
sono due tipi di collezioni in Python utilizzate per rappresentare insiemi di elementi univoci.
Set
==Un set in Python è una collezione non ordinata di elementi univoci. Questo significa che, a differenza delle liste o delle tuple, un set non può contenere duplicati.== I set sono implementati utilizzando una struttura dati detta “hash table”, che consente di eseguire operazioni di inserimento, rimozione e verifica della presenza di un elemento in tempo quasi costante. I set sono mutabili, il che significa che è possibile modificarli dopo la loro creazione.
Ecco come è possibile creare un set in Python:
In questo esempio, abbiamo creato un set denominato my_set
contenente cinque elementi. Nota che utilizziamo le parentesi graffe {}
per definire un set.
I set supportano una serie di operazioni comuni, tra cui:
- Aggiunta di elementi: Puoi aggiungere un elemento a un set utilizzando il metodo
add()
.
- Rimozione di elementi: Puoi rimuovere un elemento da un set utilizzando il metodo
remove()
.
- Unione di set: Puoi unire due set utilizzando l’operatore di unione
|
o il metodounion()
.
- Intersezione di set: Puoi ottenere l’intersezione di due set utilizzando l’operatore di intersezione
&
o il metodointersection()
.
- Differenza di set: Puoi ottenere la differenza tra due set utilizzando l’operatore di differenza
-
o il metododifference()
.
- Verifica della presenza di un elemento: Puoi verificare se un elemento è presente in un set utilizzando l’operatore
in
.
- Iterazione sui set: Puoi iterare sugli elementi di un set utilizzando un ciclo
for
.
frozenset
A differenza dei set, ==i frozenset
in Python sono immutabili, il che significa che non è possibile modificarli dopo la loro creazione==.
Questo li rende utili quando è necessario garantire che un insieme di elementi rimanga costante nel tempo.
I frozenset
sono implementati utilizzando una struttura dati simile a un set, ma questa struttura dati è immutabile.
Ecco come è possibile creare un frozenset
in Python:
In questo esempio, abbiamo creato un frozenset
denominato my_
frozenset“ contenente gli stessi elementi del set precedente.
Poiché i frozenset
sono immutabili, non è possibile aggiungere o rimuovere elementi da un frozenset
. Tuttavia, puoi eseguire operazioni come l’intersezione, la differenza e la verifica della presenza di elementi nello stesso modo in cui lo faresti con un set.
Ecco alcune operazioni comuni con i frozenset
:
- Intersezione di
frozenset
: Puoi ottenere l’intersezione di duefrozenset
utilizzando l’operatore di intersezione&
o il metodointersection()
.
- Differenza di
frozenset
: Puoi ottenere la differenza tra duefrozenset
utilizzando l’operatore di differenza-
o il metododifference()
.
- Verifica della presenza di un elemento in un
frozenset
: Puoi verificare se un elemento è presente in unfrozenset
utilizzando l’operatorein
.
- Iterazione sui
frozenset
: Puoi iterare sugli elementi di unfrozenset
utilizzando un ciclofor
nello stesso modo in cui lo faresti con un set.
Un’altra caratteristica importante dei frozenset
è che possono essere utilizzati come chiavi nei dizionari, a differenza dei set mutabili. Questo è possibile poiché i frozenset
sono immutabili e quindi hashabili.
Inoltre, poiché i frozenset
sono immutabili, sono più adatti per essere utilizzati in contesti in cui è necessaria l’immutabilità, ad esempio all’interno di dizionari o come elementi di set più grandi.
Differenze chiave tra set e frozenset
- Mutabilità: I
set
sono mutabili, il che significa che è possibile modificarli dopo la loro creazione, mentre ifrozenset
sono immutabili e non possono essere modificati. - Hashability: I
frozenset
sono hashabili e possono essere utilizzati come chiavi nei dizionari, mentre iset
mutabili non possono essere utilizzati come chiavi nei dizionari poiché non sono hashabili. - Operazioni di inserimento e rimozione: I
set
supportano operazioni di inserimento e rimozione di elementi, mentre ifrozenset
non supportano queste operazioni poiché sono immutabili. - Utilizzo: I
set
sono utilizzati quando è necessario un insieme mutabile di elementi, mentre ifrozenset
sono utilizzati quando è necessario garantire che l’insieme rimanga costante e immutabile nel tempo.