Python - Sets

Matematicamente un set è una raccolta di elementi non in un ordine particolare. Un set Python è simile a questa definizione matematica con le seguenti condizioni aggiuntive.

  • Gli elementi del set non possono essere duplicati.
  • Gli elementi dell'insieme sono immutabili (non possono essere modificati) ma l'insieme nel suo insieme è mutabile.
  • Non vi è alcun indice associato a nessun elemento in un set Python. Quindi non supportano alcuna operazione di indicizzazione o affettamento.

Imposta operazioni

Gli insiemi in python sono tipicamente usati per operazioni matematiche come unione, intersezione, differenza e complemento ecc. Possiamo creare un insieme, accedere ai suoi elementi ed eseguire queste operazioni matematiche come mostrato di seguito.

Creare un set

Un set viene creato utilizzando la funzione set () o inserendo tutti gli elementi all'interno di una coppia di parentesi graffe.

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
Months={"Jan","Feb","Mar"}
Dates={21,22,17}
print(Days)
print(Months)
print(Dates)

Quando il codice precedente viene eseguito, produce il seguente risultato. Notare come è cambiato l'ordine degli elementi nel risultato.

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
set(['Jan', 'Mar', 'Feb'])
set([17, 21, 22])

Accesso ai valori in un set

Non possiamo accedere a valori individuali in un set. Possiamo accedere a tutti gli elementi solo insieme come mostrato sopra. Ma possiamo anche ottenere un elenco di singoli elementi scorrendo il set.

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
 
for d in Days:
	print(d)

Quando il codice precedente viene eseguito, produce il seguente risultato.

Wed
Sun
Fri
Tue
Mon
Thu
Sat

Aggiunta di elementi a un set

Possiamo aggiungere elementi a un set usando il metodo add (). Anche in questo caso, come discusso, non vi è alcun indice specifico allegato all'elemento appena aggiunto.

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])
 
Days.add("Sun")
print(Days)

Quando il codice precedente viene eseguito, produce il seguente risultato.

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Rimozione di un articolo da un set

Possiamo rimuovere elementi da un insieme usando il metodo discard (). Anche in questo caso, come discusso, non vi è alcun indice specifico allegato all'elemento appena aggiunto.

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])
 
Days.discard("Sun")
print(Days)

Quando il codice precedente viene eseguito, produce il seguente risultato.

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Unione di insiemi

L'operazione di unione su due insiemi produce un nuovo insieme contenente tutti gli elementi distinti di entrambi gli insiemi. Nell'esempio seguente l'elemento "Wed" è presente in entrambi i set.

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA|DaysB
print(AllDays)

Quando il codice precedente viene eseguito, produce il seguente risultato. Si prega di notare che il risultato ha un solo "wed".

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Intersezione di insiemi

L'operazione di intersezione su due insiemi produce un nuovo insieme contenente solo gli elementi comuni di entrambi gli insiemi. Nell'esempio seguente l'elemento "Wed" è presente in entrambi i set.

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA & DaysB
print(AllDays)

Quando il codice precedente viene eseguito, produce il seguente risultato. Si prega di notare che il risultato ha un solo "wed".

set(['Wed'])

Differenza di insiemi

L'operazione di differenza su due insiemi produce un nuovo insieme contenente solo gli elementi del primo insieme e nessuno del secondo insieme. Nell'esempio seguente l'elemento "Wed" è presente in entrambi i set, quindi non verrà trovato nel set di risultati.

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA - DaysB
print(AllDays)

Quando il codice precedente viene eseguito, produce il seguente risultato. Si prega di notare che il risultato ha un solo "wed".

set(['Mon', 'Tue'])

Confronta i set

Possiamo verificare se un dato insieme è un sottoinsieme o un superserie di un altro insieme. Il risultato è Vero o Falso a seconda degli elementi presenti negli insiemi.

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
SubsetRes = DaysA <= DaysB
SupersetRes = DaysB >= DaysA
print(SubsetRes)
print(SupersetRes)

Quando il codice precedente viene eseguito, produce il seguente risultato.

True
True