Le variabili Set in Python

Nel linguaggio Python i Set sono variabili vettore che includono un insieme di elementi non ordinati e non duplicati.

set([elemento1, elemento2, ... , elemento n]);

In alternativa si possono usare le parentesi graffe senza usare la parola set.

{ elemento1, elemento2, ... , elemento n }

Le variabili Set possono essere modificate con tutte le operazioni della teoria degli insiemi ( unione, differenza e intersezione, intersezione asimmetrica, ecc. ).

Nota. Quando si passa una stringa come parametro della parola chiave set tra parentesi tonde, il comando crea un insieme con i caratteri della stringa. L'insieme è composto dai caratteri senza ripetizioni. Ad esempio, la lettera "a" è presente due volte nel nome "Andrea" ma è un solo elemento dell'insieme.
il comando set per contare i caratteri di una parola

Un esempio pratico di Set

Nel seguente esempio assegno tre nomi di città alla variabile city:

city = set(["Milano", "Roma", "Torino"])

Potrei anche fare l'assegnazione senza la parola chiave set digitando

city = { "Milano", "Roma", "Torino" }

Poi assegno tre nomi di capitali europee alla variabile capitali

capitali = set(["Roma", "Parigi", "Londra"])

Si tratta di due variabili Set.

A questo punto posso usare le due variabili Set per effettuare tutte le principali operazioni dell'insiemistica.

Operazione Operatore Esempio
Unione ( OR ) | city | capitali
Intersezione ( AND ) & city & capitali
Differenza
Interferenza asimmetrica
- city - capitali
Interferenza simmetrica (XOR) ^ city ^ capitali

Unione degli insiemi

Per creare un insieme unione di altri due insiemi utilizzo il simbolo | dell'operatore logico OR.

print ( city | capitali )

Il risultato di questa operazione è il seguente:

{'Torino', 'Milano', 'Parigi', 'Londra', 'Roma'}

Pur appartenendo a entrambi gli insiemi, l'elemento "Roma" appare una sola volta nell'insieme unione.

In alternativa, per unire due insiemi posso anche utilizzare il metodo union() delle variabili set

city.union(capitali)

Il risultato è lo stesso.

Intersezione tra insiemi

Per trovare gli elementi presenti in entrambe le variabili Set utilizzo l'operatore AND (&)

print ( city & capitali )

Il risultato di questa operazione è il seguente:

Roma

L'elemento "Roma" è l'unico a essere presente in entrambi i set.

In alternativa, per intersecare i due insiemi posso anche usare il metodo intersection() delle variabili set

city.intersection(capitali)

Il risultato è lo stesso.

La differenza tra insiemi

Per trovare gli elementi presenti nel primo Set che non sono inclusi nel secondo ( differenza tra insiemi o intersezione asimmetrica ) scrivo nel seguente modo:

print ( capitali - city )

Il risultato dell'operazione è il seguente:

Parigi, Londra

L'elemento "Roma" viene escluso perché è incluso anche nel secondo Set ( city ).

In alternativa, per ottenere la differenza tra due insiemi posso anche usare il metodo difference() delle variabili set

capitali.difference(city)

Il risultato è lo stesso.

Cos'è l'intersezione asimmetrica? L'intersezione asimmetrica mette a confronto due Set e individua gli elementi che sono presenti soltanto in uno dei due Set.

Intersezione simmetrica ( XOR )

Per trovare gli elementi che appartengono a uno dei due insiemi ma non a entrambi, utilizzo il simbolo ^ dell'intersezione simmetrica ( XOR ).

print ( capitali ^ city )

Il risultato dell'operazione è il seguente:

{'Torino', 'Milano', 'Parigi', 'Londra'}

L'elemento "Roma" viene escluso perché è presente in entrambi gli insiemi.

In alternativa, per calcolare l'intersezione simmetrica (o differenza simmetrica) posso anche usare il metodo symmetric_difference() delle variabili set

capitali.symmetric_difference(city)

Il risultato è lo stesso.

Nota. I metodi union(), intersection(), difference() e symmetric_difference() hanno un vantaggio rispetto agli operatori, in quanto posso utilizzarli anche tra una variabile set e un altro tipo di oggetto iterabile. Viceversa, gli operatori posso usarli solo tra due variabili di tipo set..

Qual è la differenza tra liste e set in Python

Sia una lista che un Set possono essere modificate.

Tuttavia, una variabile Set non può contenere dei valori duplicati al suo interno.

Viceversa, una lista può contenere anche gli stessi valori ripetuti.

Come di distingue una lista da un Set? Nell'assegnazione dei valori a una variabile Set si utilizzano le parentesi tonde all'esterno e le parentesi quadre all'interno. In una lista, invece, si usano soltanto le parentesi quadre mentre in una tupla soltanto quelle tonde.

La set comprehension

La comprehension delle liste si applica anche agli insiemi.

A differenza delle liste, nel caso degli insiemi il risultato non contiene valori duplicati.

Esempio

In questo script seleziono tutti i resti della divisione per due.

numeri=[1 2 3 4 5 6 7 8 9]
resti={n % 3 for n in numeri}

Il risultato dell'elaborazione è il seguente:

{0, 1, 2}

I resti della divisione per 3 dei numeri da 1 a 9 sono 0, 1 e 2. Senza duplicati.

Come verificare se un valore è nel Set

Per controllare se un particolare valore si trova nell'insieme set posso usare l'operatore in

x in nomeset

Dove x è l'elemento da cercare nell'insieme.

Si tratta di un'espressione booleana. Se l'elemento esiste nell'insieme l'espressione è true. Viceversa è false.

Esempio

In queste due righe di codice definisco il set city e controllo se l'elemento "Roma" appartiene al set.

city = set(["Milano", "Roma", "Torino"])
if ("Roma" in city):
print("esiste")

L'elemento "Roma" esiste nel set city. Quindi l'output del programma è

esiste

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le variabili in Python

  1. Le variabili
  2. I tipi di variabili
  3. Le stringhe
  4. L'assegnazione in linea
  5. Le liste
  6. Le tuple
  7. I set
  8. I dizionari