P.22 Insiemi

Gli insiemi sono delle strutture dati che possono raccogliere dati senza però garantire un ordinamento, infatti non c’è un indice che possiamo usare per scorrere il loro contenuto e non ci possono essere elementi ripetuti.

Esploriamo insieme le funzioni fondamentali degli insiemi. Iniziamo creando un insieme come se fosse una lista, usando però le parentesi graffe:

s = {"a", "b", "e", "m"}

Possiamo visualizzare direttamente il contenuto di un insieme utilizzando print():

print(s)

Se creiamo un insieme con dei duplicati, questi saranno ignorati! Provate a scrivere:

s = {"mela", "banana", "pera", "mela"}

e poi stampatelo a video con:

print(s)

L’elemento “mela” comparirà una sola volta!

Possiamo costruire un insieme partendo da una lista e passandola all’istruzione set():

s = set([1, 2, 3, 2])

Aggiungiamo elementi all’insieme con add():

s.add(“pane”)

Li rimuoviamo con discard():

s = {1, 3, 4, 5, 6}
print(s)
s.discard(4)
print(s)

C’è anche l’istruzione remove() ma se l’elemento non è presente si avrà un errore!

Per svuotare completamente un’insieme usiamo clear().

s = {1, 3, 4, 5, 6}
print(s)
s.clear()
print(s)

Possiamo lavorare sugli insiemi con alcuni operatori che ci permettono di unirli, trovare la parte comune o eseguire differenze. Questi operatori sono detti “booleani”. Ecco un’esempio delle principali funzioni, provate a eseguirlo e osservate i differenti risultati:

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
C = A.union(B)
print(C)

C = A.intersection(B)
print(C)

C = A.difference(B)
print(C)

C = A.symmetric_difference(B)
print(C)

Come per le altre strutture dati possiamo verificare se un elemento è presente in un insieme utilizzando l’operatore in:

S = {1, 3, 4, 5, 6}
if (4 in S):
    print(“4 è presente”)

Possiamo scorrere gli elementi di un insieme con un ciclo for ma ricordate che non abbiamo garanzia dell’ordine!

S = {1, 3, 4, 5, 6}
for el in S:
    print(el)