Set

In matematica esiste qualcosa come un insieme (o teoria degli insiemi). Forse li hai persino studiati in un corso di matematica. Potresti anche avere familiarità con i diagrammi di Venn.
In pratica, un insieme può essere pensato semplicemente come un insieme ben definito di singoli oggetti, chiamati elementi o membri.
Raggruppare oggetti in un set può essere utile nella programmazione e Python ci fornisce il tipo integrato set.

Gli insiemi (tipo set) differiscono da altri tipi di oggetti per le operazioni uniche che possono essere eseguite su di essi.

Il tipo integrato set in Python ha le seguenti caratteristiche:
    Gli
  • elementi di un set non sono ordinati (il che significa che due set sono equivalenti se contengono gli stessi elementi). Gli elementi dell'insieme vengono memorizzati non in sequenza, ma secondo determinati algoritmi che consentono di determinare rapidamente se un elemento appartiene a un insieme (senza enumerazione di tutti gli elementi);
  • gli elementi del set sono unici. Gli elementi duplicati non sono consentiti;
  • gli insiemi sono mutabili (ad esempio, puoi aggiungere un elemento a un insieme), ma gli elementi stessi all'interno dell'insieme devono essere immutabili (numeri, stringhe, tuple). Non puoi fare di una lista o di un altro insieme un elemento di un insieme;

 

Crea insieme
Solo andata

Enumera semplicemente tra parentesi graffe gli elementi nell'insieme.

x = {"scuola", "insegnante", "classe", studente}
 

Bidirezionale 
Utilizza la funzione integrata set(). x = set()    # insieme vuoto list_name = ["Andry", "Bob", "Caroline"] y = set(nome_lista)    # puoi creare più                        # da qualsiasi oggetto iterabile z = set(["Andry", "Bob", "Caroline"])     # {'Bob', 'Caroline', 'Andry'} k = set(("Andry", "Bob", "Caroline"))     # {'Bob', 'Caroline', 'Andry'} s = "stringa s" m = insieme/i    # {'i', 't', 'g', 'r', 'n', & #39;s', ' '} -                # Attenzione!                # l'ordine degli elementi può essere qualsiasi,               # elementi non vengono ripetuti n = {42, 'foo', 3.14159, Nessuno, (1, 2, 3)}    # elementi in                                                # possono essere di diversi tipi  
Imposta uscita
Gli elementi dell'insieme vengono visualizzati in un ordine arbitrario, non necessariamente nell'ordine in cui vengono aggiunti. z = set(["Andry", "Bob", "Caroline"])  stampa(z)     # {'Bob', 'Caroline', 'Andry'} stampa(*z)    # Bob Andry Caroline

Metodi per lavorare con gli insiemi


Numero di elementi nell'insieme
Il metodo len() restituisce il numero di elementi nell'insieme. k = {42, 'foo', 3.14159, Nessuno, (1, 2, 3)}  print(len(k))    #5

 

Determinare se un elemento è in un insieme (appartenenza in)
k = {42, 'foo', 3.14159, Nessuno, (1, 2, 3)}  print(42 in k)    # Vero print(2 in k)     # Falso
Sebbene gli elementi contenuti in un insieme debbano essere di tipo immutabile, gli insiemi stessi possono essere modificati. 

 

Aggiunta di un elemento a set
x.add(<elem>)
all'insieme  x aggiunge <elem> che deve essere l'unico oggetto immutabile.

 

Rimuovere un elemento da un insieme
1) x.remove(<elem>)
<elem>  viene rimosso dall'insieme x. Python lancia un'eccezione (errore) se <elem> non è in x.

2) x.discard(<elem>)
lo stesso cancella, ma in caso di assenza di un elemento nell'insieme, non solleva eccezione.

3) x.pop()
rimuove e restituisce un elemento casuale dall'insieme. Se il set è inizialmente vuoto, si verifica un'eccezione (errore).

4) x.clear()
rimuove tutti gli elementi dall'insieme (cancella l'insieme).

Error

Impostare l'ordinamento?

Come sappiamo, l'ordine degli elementi nell'insieme non viene preso in considerazione. Quindi ha senso parlare di insiemi di ordinamento in Python 3?! (Ecco perché c'è un punto interrogativo nel titolo)

Per trovare rapidamente un elemento in un insieme, è consigliabile memorizzarli in una forma ordinata.

Diamo un'occhiata ad alcuni esempi. Cosa succede agli elementi di diversi tipi di dati nello stesso set? Tali ​​elementi non dovrebbero essere ordinati. Se stampiamo gli elementi usando il comando print(), verranno visualizzati in questo modo:

a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'} print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} In questo caso, vengono visualizzati valori non ordinati. Se ripeti il ​​lancio, l'ordine di output potrebbe essere diverso. Ma questo è solo se vengono mescolati elementi di tipi diversi.

Proviamo a visualizzare dati di un tipo (ad esempio, solo numeri): un = {0, 1, 12, 3, 2} print(a) # {0, 1, 2, 3, 12} Tutti gli elementi vengono visualizzati in ordine. Proviamo a convertirlo in una lista: un = {0, 1, 12, 3, 2} b = lista(a) stampa(b) # [0, 1, 2, 3, 12] Allo stesso modo, gli elementi ordinati in ordine crescente sono stati scritti nell'elenco.

Si scopre che gli elementi sono archiviati in memoria in una forma ordinata se sono dello stesso tipo. Ma è meglio non contarci, gli algoritmi di Python possono cambiare.

Se hai bisogno di ottenere un elenco ordinato da un insieme, è meglio usare sort (< code>sorted) per essere sicuri ). Gli elementi saranno esattamente ordinati. Il tuo codice sarà comprensibile per gli altri.