Python - Set
Ciao, aspiranti programmatori Python! Oggi, esploreremo il fantastico mondo dei Set Python. Come insegnante di informatica amichevole del quartiere, sono entusiasta di guidarvi in questo viaggio. Quindi, prenda la sua bevanda preferita, si rilassi e esploriamo insieme i set!
Set in Python
Immagina di avere una borsa di biglie colorate. Ogni biglia è unica e non ti preoccupi dell'ordine in cui sono - vuoi solo sapere quali colori hai. Questo è essenzialmente quello che è un set in Python!
Un set è una raccolta non ordinata di elementi unici. È come un insieme matematico: non sono ammessi duplicati e l'ordine non importa. I set sono incredibilmente utili quando è necessario memorizzare elementi unici o eseguire operazioni di set come l'unione, l'intersezione e la differenza.
Creazione di un Set in Python
Iniziamo creando il nostro primo set. Ci sono due modi principali per creare un set in Python:
- Utilizzando le parentesi graffe {}
- Utilizzando il costruttore set()
Ecco un esempio di entrambi i metodi:
# Metodo 1: Utilizzando le parentesi graffe
frutti = {'mela', 'banana', 'ciliegia'}
# Metodo 2: Utilizzando il costruttore set()
colori = set(['rosso', 'verde', 'blu'])
print(frutti)
print(colori)
Output:
{'ciliegia', 'mela', 'banana'}
{'blu', 'rosso', 'verde'}
Notare come l'ordine degli elementi nell'output possa essere diverso da come li abbiamo definiti. Questo perché i set sono non ordinati!
Elementi Duplicati in Set
Ricorda quando ho detto che i set contengono solo elementi unici? Vediamo cosa succede quando proviamo ad aggiungere duplicati:
numeri = {1, 2, 3, 2, 4, 3, 5}
print(numeri)
Output:
{1, 2, 3, 4, 5}
Come puoi vedere, Python rimuove automaticamente i duplicati per noi. Non è fantastico?
Aggiunta di Elementi in un Set
Per aggiungere un singolo elemento a un set, utilizziamo il metodo add()
. Se vogliamo aggiungere più elementi alla volta, utilizziamo il metodo update()
.
# Aggiunta di un singolo elemento
frutti.add('arancia')
print(frutti)
# Aggiunta di più elementi
frutti.update(['uva', 'mango'])
print(frutti)
Output:
{'ciliegia', 'mela', 'banana', 'arancia'}
{'ciliegia', 'mango', 'mela', 'banana', 'arancia', 'uva'}
Rimozione di Elementi da un Set
Ci sono diversi modi per rimuovere elementi da un set. Esploriamoli:
# Utilizzando remove() - solleva un errore se l'elemento non esiste
frutti.remove('banana')
# Utilizzando discard() - non solleva un errore se l'elemento non esiste
frutti.discard('kiwi')
# Utilizzando pop() - rimuove e restituisce un elemento arbitrario
popped = frutti.pop()
print(f"Elemento estratto: {popped}")
# Utilizzando clear() - rimuove tutti gli elementi
frutti.clear()
print(frutti)
Output:
Elemento estratto: ciliegia
set()
Test di Appartenenza in un Set
Una delle grandi cose dei set è che permettono un test di appartenenza molto veloce. Possiamo utilizzare la parola chiave in
per controllare se un elemento esiste in un set:
numeri = {1, 2, 3, 4, 5}
print(3 in numeri) # True
print(6 in numeri) # False
Questa operazione è molto più veloce con i set rispetto alle liste, specialmente per raccolte grandi!
Operazioni sui Set
I set in Python supportano varie operazioni sugli insiemi matematici. Ecco alcune di loro:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# Unione
print(set1 | set2) # o set1.union(set2)
# Intersezione
print(set1 & set2) # o set1.intersection(set2)
# Differenza
print(set1 - set2) # o set1.difference(set2)
# Differenza Simmetrica
print(set1 ^ set2) # o set1.symmetric_difference(set2)
Output:
{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5}
{1, 2, 3}
{1, 2, 3, 6, 7, 8}
Compreensioni di Set Python
Proprio come le comprehension di lista, Python supporta anche le comprehension di set. Forniscono un modo conciso per creare set basati su oggetti iterabili esistenti.
# Creazione di un set di quadrati dei numeri da 0 a 9
quadrati = {x**2 for x in range(10)}
print(quadrati)
Output:
{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
Filtraggio degli Elementi Utilizzando le Compreensioni di Set
Possiamo anche utilizzare le comprehension di set per filtrare gli elementi:
# Creazione di un set di quadrati pari da 0 a 9
quadrati_pari = {x**2 for x in range(10) if x % 2 == 0}
print(quadrati_pari)
Output:
{0, 4, 16, 36, 64}
Compreensioni di Set Annidate
Anche se meno comuni, le comprehension di set annidate sono anche possibili:
# Creazione di un set di tuple (x, y) dove x e y sono cifre
coppie_cifre = {(x, y) for x in range(3) for y in range(3)}
print(coppie_cifre)
Output:
{(0, 1), (1, 2), (0, 0), (2, 0), (1, 1), (2, 2), (0, 2), (2, 1), (1, 0)}
Set Congelati
Non ultimo, parliamo dei set congelati. Un set congelato è una versione immutabile di un oggetto set Python. Mentre gli elementi di un set possono essere modificati in qualsiasi momento, gli elementi di un set congelato rimangono uguali dopo la creazione.
set_normale = {1, 2, 3}
set_congelato = frozenset([1, 2, 3])
set_normale.add(4) # Questo funziona
# set_congelato.add(4) # Questo solleverebbe un AttributeError
I set congelati sono particolarmente utili quando è necessario un set immutabile, come usarlo come chiave di un dizionario.
Eccoci! Abbiamo coperto i punti chiave dei set Python. Ricorda, la pratica rende perfetto, quindi non esitare a sperimentare questi concetti. Buon coding!
Ecco una tabella che riassume i principali metodi di set che abbiamo discusso:
Metodo | Descrizione |
---|---|
add() | Aggiunge un elemento al set |
update() | Aggiunge più elementi al set |
remove() | Rimuove un elemento specifico dal set (solleva un errore se non trovato) |
discard() | Rimuove un elemento specifico dal set (nessun errore se non trovato) |
pop() | Rimuove e restituisce un elemento arbitrario dal set |
clear() | Rimuove tutti gli elementi dal set |
union() | Restituisce un set contenente l'unione di set |
intersection() | Restituisce un set contenente l'intersezione di set |
difference() | Restituisce un set contenente la differenza di set |
symmetric_difference() | Restituisce un set con elementi in uno o l'altro set, ma non entrambi |
Credits: Image by storyset