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.