2.3.7 Tipi set

Un oggetto set (NdT: insieme) è una collezione non ordinata di valori immutabili. Gli usi comuni includono l'esame dei membri dell'insieme, la rimozione dei duplicati da una sequenza, e la computazione di operazioni matematiche quali intersezione, unione, differenza, e differenza simmetrica. Nuovo nella versione 2.4.

Come altre collezioni, gli insiemi supportano x in set, len(set) e for x in set. Essendo collezioni non ordinate, gli insiemi non registrano la posizione degli elementi o l'ordine di inserzione. Di conseguenza, gli insiemi non supportano l'indicizzazione, l'affettamento o altri comportamenti tipici delle sequenze.

Esistono correntemente due tipi di insiemi built-in, set e frozenset. Il tipo set è mutabile -- il contenuto può essere cambiato usando metodi come add() e remove(). Poiché è mutabile, non ha un valore hash e non può venire usato come una chiave di dizionario o un elemento di un altro insieme. Il tipo frozenset è immutabile e supporta l'hash -- il suo contenuto non può venire alterato dopo la creazione; tuttavia, può venire usato come una chiave di dizionario o come un elemento di un altro insieme.

Le istanze di set e frozenset forniscono le seguenti operazioni:

Operazione  Equivalenza  Risultato 
len(s)   cardinalità dell'insieme s
x in s   verifica x come membro di s
x not in s   verifica che x non sia un membro di s
s.issubset(t) s <= t verifica se ogni elemento in s è in t
s.issuperset(t) s >= t verifica se ogni elemento in t è in s
s.union(t) s | t nuovo insieme con elementi sia di s che di t
s.intersection(t) s & t nuovo insieme con elementi comuni tra s e t
s.difference(t) s - t nuovo insieme con elementi in s ma non in t
s.symmetric_difference(t) s ^ t nuovo insieme con gli elementi di s o t ma non entrambi
s.copy()   nuovo insieme, una copia superficiale di s

Notate, le versioni dei metodi non operatori di union(), intersection(), difference(), symmetric_difference(), issubset() e issuperset() accetteranno ogni iterabile come argomento. Invece i loro operatori base controparte richiedono che i propri argomenti debbano essere insiemi. Questo preclude errori di costruzione come set('abc') & 'cbs' in favore di un più leggibile set('abc').intersection('cbs').

set e frozenset supportano il confronto tra insiemi. Due insiemi sono uguali se e solo se ogni elemento di ogni insieme è contenuto nell'altro (ognuno è un sotto insieme dell'altro). Un insieme è minore dell'altro insieme se e solo se il primo insieme è un insieme di proprietà del secondo insieme (è un sotto insieme ma non è uguale). Un insieme è più grande di un altro insieme se e solo se il primo insieme è un superinsieme proprietario del secondo insieme (è un superinsieme, ma non è uguale).

Il sotto insieme ed il confronto di uguaglianza non generalizzano ad una funzione di ordinamento completa. Per esempio, ogni due insiemi disgiunti sono non uguali e non sono sottoinsiemi uno dell'altro, così tutte le seguenti uguaglianze restituiscono False: a<b, a==b o a>b. Di conseguenza, gli insiemi non implementano il metodo __cmp__.

Poichè gli insiemi definiscono solo parzialmente l'ordinamento (relazioni tra sottoinsiemi), l'output del metodo list.sort() risulta indefinito per le liste di insiemi.

Per convenienza nell'implementazione di insiemi di insiemi, i metodi __contains__(), remove() e discard() automaticamente cercano corrispondenze con istanze della classe set e le loro controparti frozenset, all'interno di un insieme. Per esempio, set('abc') in set([frozenset('abc')])) restituisce True.

La seguente tabella elenca le operazioni disponibili per classi set che non applicano l'istanza immutabile di frozenset:

Operazione  Equivalenza  Risultato 
s.update(t) s |= t restituisce l'insieme s con elementi aggiunti da t
s.intersection_update(t) s &= t restituisce l'insieme s dei soli valori comuni riscontrati anche in t
s.difference_update(t) s -= t restituisce l'insieme s dopo la rimozione degli elementi comuni riscontrati in t
s.symmetric_difference_update(t) s ^= t restituisce l'insieme s con elementi da s o t ma non da entrambi
s.add(x)   aggiunge l'elemento x all'insieme s
s.remove(x)   rimuove 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 arbitrario da s; solleva l'eccezione KeyError se non presente
s.clear()   rimuove tutti gli elementi dall'insieme s

Notate, le versioni non operatore dei metodi update(), intersection_update(), difference_update() e symmetric_difference_update() accetteranno ogni iterabile come un argomento.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy