Nuovo nella versione 2.3.
Il modulo sets fornisce classi per la costruzione e la manipolazione di raccolte non ordinate di elementi distinti. Si possono usare per test di appartenenza, per rimuovere duplicati da una sequenza e per calcolare le operazioni matematiche standard sugli insiemi come l'intersezione, l'unione, la differenza e la differenza simmetrica.
Come le altre raccolte, sets supporta x in set
,
len(set)
e for x in set
. Essendo una
raccolta non ordinata, sets non memorizza la posizione degli
elementi o l'ordine di inserimento. Di conseguenza, sets non supporta
l'indicizzazione, l'affettamento o altre caratteristiche proprie delle
sequenze.
La maggior parte delle applicazioni insiemistiche utilizza la classe
Set che fornisce tutti i metodi per la gestione degli insiemi eccetto
__hash__(). Per applicazioni avanzate che richiedono un
metodo hash, la classe ImmutableSet aggiunge un metodo
__hash__(), ma non possiede i metodi che alterano il contenuto
dell'insieme. Sia Set che ImmutableSet derivano da
BaseSet, una classe astratta utile per definire che cosa sia un
insieme: isinstance(obj, BaseSet)
.
Le classi set vengono implementate usando i dizionari. Di conseguenza,
gli insiemi non possono contenere elementi mutabili come liste o
dizionari. In ogni caso possono contenere raccolte immutabili come tuple o
istanze di ImmutableSet. Per praticità nell'implementazione
di insiemi di insiemi, gli insiemi nidificati vengono automaticamente
convertiti nella loro forma immutabile, per esempio:
Set([Set(['dog'])])
viene trasformato in
Set([ImmutableSet(['dog'])])
.
[iterable]) |
[iterable]) |
Poiché gli oggetti ImmutableSet forniscono un metodo __hash__(), essi possono essere utilizzati come elementi di un insieme o come chiavi di un dizionario. Gli oggetti ImmutableSet non possiedono metodi per aggiungere o rimuovere elementi, perciò tutti gli elementi devono essere noti al momento della chiamata al costruttore.