Cosa sono i set in Python

I set, o insiemi, sono una delle strutture dati fondamentali di Python che offrono un modo efficace e efficiente per memorizzare e manipolare collezioni di elementi univoci. Nella programmazione Python, i set svolgono un ruolo cruciale in molteplici scenari, dalla rimozione di duplicati nelle collezioni di dati all'esecuzione di operazioni matematiche di insieme come unioni, intersezioni e differenze. 

In questa guida, esploreremo in dettaglio i set in Python, illustrando come possono essere utilizzati attraverso esempi pratici e discutendo le loro caratteristiche distintive.

I set in Python

Un set in Python è una collezione non ordinata di elementi univoci. I set sono mutabili, il che significa che è possibile aggiungere o rimuovere elementi dopo la loro creazione. Tuttavia, a differenza delle liste o delle tuple, i set non supportano l'indicizzazione o lo slicing poiché sono collezioni non ordinate.

Creazione di un set in Python

I set possono essere creati utilizzando le parentesi graffe {} o la funzione integrata set(). È importante notare che le parentesi graffe vuote {} creano un dizionario, quindi per creare un set vuoto è necessario utilizzare set().

# Creazione di un set con parentesi graffe
frutti = {"mela", "banana", "ciliegia"}

# Creazione di un set vuoto
set_vuoto = set()

print(frutti) # Output: {'banana', 'ciliegia', 'mela'}
print(set_vuoto) # Output: set()

Le operazioni sui set

I set supportano una varietà di operazioni che li rendono strumenti potenti per la manipolazione di dati.

Gli elementi possono essere aggiunti a un set utilizzando il metodo add().

frutti.add("arancia")
print(frutti) # Output: {'banana', 'ciliegia', 'mela', 'arancia'}

Gli elementi possono essere rimossi utilizzando i metodi remove() o discard(). La differenza principale tra i due è che remove() solleverà un'eccezione se l'elemento non è presente, mentre discard() no.

frutti.remove("banana")
frutti.discard("papaya") # Nessuna eccezione se "papaya" non è presente
print(frutti) # Output: {'ciliegia', 'mela', 'arancia'}

Python supporta operazioni matematiche di insieme come unioni (|), intersezioni (&), differenze (-) e differenze simmetriche (^).

a = {1, 2, 3}
b = {3, 4, 5}

# Unione
print(a | b) # Output: {1, 2, 3, 4, 5}

# Intersezione
print(a & b) # Output: {3}

# Differenza
print(a - b) # Output: {1, 2}

# Differenza simmetrica
print(a ^ b) # Output: {1, 2, 4, 5}

Applicazioni dei set

I set sono particolarmente utili per rimuovere duplicati da una collezione, poiché memorizzano solo elementi univoci.

numeri = [1, 2, 2, 3, 4, 4, 5]
numeri_unici = set(numeri)
print(numeri_unici) # Output: {1, 2, 3, 4, 5}

Grazie alla loro implementazione interna, i set offrono un modo efficiente per testare l'appartenenza di un elemento, rendendoli ideali per operazioni di membership testing.

if "mela" in frutti:
	print("La mela è nel set dei frutti.")

Considerazioni

Immutabilità degli Elementi: I set possono contenere solo elementi immutabili. Questo significa che non è possibile includere liste o dizionari come elementi di un set.
Non Ordinati: Poiché i set sono collezioni non ordinate, non mantengono alcun ordine degli elementi. Pertanto, non sono la scelta giusta se l'ordine degli elementi è importante per la tua applicazione.

Conclusioni

I set in Python rappresentano uno strumento potente e flessibile per la gestione di collezioni di elementi univoci. Attraverso le operazioni di aggiunta, rimozione e le operazioni matematiche di insieme, i set offrono un modo efficiente per manipolare dati univoci e per eseguire test di appartenenza.

Indice pagine Python: