5.14.1 Oggetti Set

Le istanze sia di Set che di ImmutableSet forniscono le seguenti operazioni:

Operazione  Equivalente  Risultato 
len(s)   cardinalità dell'insieme s
x in s   controlla se x appartiene a s
x not in s   controlla se x non appartiene a s
s.issubset(t) s <= t controlla se ogni elemento di s appartiene a t
s.issuperset(t) s >= t controlla se ogni elemento di t appartiene a s
s.union(t) s | t nuovo insieme formato dagli elementi che appartengono sia a s che a t
s.intersection(t) s & t nuovo insieme formato dagli elementi comuni a s e a t
s.difference(t) s - t nuovo insieme con gli elementi che appartengono a s ma non a t
s.symmetric_difference(t) s ^ t nuovo insieme con gli elementi che appartengono a s o a t ma non a entrambi
s.copy()   nuovo insieme copiato da s

Notate, la versione non operatore di union(), intersection(), difference() e symmetric_difference() accetteranno ogni oggetto iterabile come argomento. Viceversa, i loro corrispettivi basati su operatori richiedono che gli argomenti siano insiemi. Questo evita costruzioni ambigue come Set('abc') & 'cbs' in favore della più leggibile Set('abc').intersection('cbs'). Modificato nella versione 2.3.1: Prima tutti gli argomenti dovevano essere insiemi.

Inoltre, sia Set che ImmutableSet supportano il confronto tra insiemi. Due insiemi sono uguali se e solo se ogni elemento di un insieme è contenuto nell'altro (ognuno è sotto insieme dell'altro). Un insieme è minore di un altro se e solo se il primo è un sotto insieme proprio del secondo (è un sotto insieme, ma non è uguale). Un insieme è maggiore di un altro se e solo se il secondo insieme è un sotto insieme proprio del primo (è un superinsieme, ma non è uguale).

Le relazioni essere sotto insieme ed essere uguali non possono venire generalizzate in una relazione d'ordine completa. Per esempio due insiemi disgiunti non sono uguali e neppure sono uno sotto insieme dell'altro, così ognuna delle seguenti espressioni restituisce False: a<b, a==b, o a>b. Quindi, negli insiemi non viene implementato il metodo __cmp__.

Poiché negli insiemi viene definito solo un ordine parziale (la relazione sotto insieme), il risultato del metodo list.sort() rimane indefinito per liste di insiemi.

La seguente tabella elenca le operazioni disponibili in ImmutableSet ma che non si trovano in Set:

Operazione  Risultato 
hash(s) restituisce un valore hash per s

La seguente tabella elenca le operazioni disponibili in Set ma che non si trovano in ImmutableSet:

Operazione  Equivalente  Risultato 
s.union_update(t) s |= t restituisce s con gli elementi aggiunti da t
s.intersection_update(t) s &= t restituisce s lasciando solo gli elementi che si trovano anche in t
s.difference_update(t) s -= t restituisce s dopo aver rimosso gli elementi trovati in t
s.symmetric_difference_update(t) s ^= t restituisce s con gli elementi che si trovano in s o in t ma non in entrambi
s.add(x)   aggiunge l'elemento x all'insieme s
s.remove(x)   rimuove l'elemento x dall'insieme s; solleva l'eccezione KeyError se non è presente
s.discard(x)   rimuove x dall'insieme s se è presente
s.pop()   rimuove e restituisce un elemento qualsiasi dell'insieme s; solleva l'eccezione KeyError se vuoto
s.clear()   rimuove tutti gli elementi dall'insieme s

Notate, le versioni non operatore di union_update(), intersection_update(), difference_update() e symmetric_difference_update() accetteranno ogni oggetto iterabile come argomento. Modificato nella versione 2.3.1: Prima tutti gli argomenti dovevano essere insiemi.

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