5.14 sets -- Raccolte non ordinate di elementi distinti (Insiemi)

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'])]).

class Set( [iterable])
Costruisce un nuovo oggetto Set vuoto. Se è presente il parametro facoltativo iterable, l'insieme viene riempito con gli elementi ottenuti dall'iterazione. Tutti gli elementi di iterable dovrebbero essere immutabili o poter essere trasformati in immutabili utilizzando il protocollo descritto nella sezione 5.14.3.

class ImmutableSet( [iterable])
Costruisce un nuovo oggetto ImmutableSet vuoto. Se è presente il parametro facoltativo iterable, l'insieme viene riempito con gli elementi ottenuti dall'iterazione. Tutti gli elementi di iterable dovrebbero essere immutabili o poter essere trasformati in immutabili utilizzando il protocollo descritto nella sezione 5.14.3.

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.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.