CodeGym /Corsi /Python SELF IT /Lavorare con i set

Lavorare con i set

Python SELF IT
Livello 9 , Lezione 3
Disponibile

3.1 Determinazione del numero di elementi

Determinare il numero di elementi in un set si può fare con la funzione len(). Questa funzione restituisce il numero di elementi unici nel set.

Esempio di utilizzo della funzione len()


my_set = {1, 2, 3, 4, 5}
print(len(my_set))  # Output: 5
        

In questo esempio il set my_set contiene cinque elementi. La funzione len() restituisce questo numero.

Verifica se il set è vuoto

Puoi usare la funzione len() per verificare se il set è vuoto. Questo può essere utile nelle condizioni e nei cicli.


my_set = set()

if len(my_set) == 0:
    print("Il set è vuoto")
else:
    print("Il set non è vuoto")
        

3.2 Determinazione del tipo

Se non sai esattamente se un set è memorizzato in una variabile, per maggiore sicurezza puoi usare la funzione type(). La funzione type() in Python restituisce il tipo dell'oggetto. Questo è utile per controllare il tipo di dati, specialmente quando lavori con set e altre raccolte di dati.

Esempio:


my_set = {1, 2, 3}
print(type(my_set))  # Output: <class 'set'>

        

In questo esempio type(my_set) restituisce <class 'set'>, indicando che my_set è un set.

Controllo del tipo di dati

Puoi usare la funzione type() per verificare il tipo di dati prima di eseguire operazioni. Questo aiuta a evitare errori dovuti a tipi di dati incompatibili.


def add_element(collection, element):
    if type(collection) is set:
        collection.add(element)
    else:
        print("Errore: la collezione fornita non è un set")
        
my_set = {1, 2, 3}
add_element(my_set, 4)  # L'elemento sarà aggiunto
add_element([1, 2, 3], 4)  # Verrà visualizzato un errore
        

In questo esempio la funzione add_element() verifica se la collezione fornita è un set prima di aggiungere l'elemento.

La funzione type() può essere utile quando si creano strutture dati complesse che possono contenere molti diversi tipi di dati. Consente di determinare dinamicamente il tipo di dati e di gestirli di conseguenza.

Esempio:


my_set = {}
print(type(my_set))  # Output: <class 'dict'> 
        

Le parentesi graffe sono usate sia per creare un set che per creare un dizionario (ci sono alcune differenze di sintassi all'interno). Per impostazione predefinita, se non ci sono elementi tra le parentesi — verrà creato un dizionario!

3.3 Ordine degli elementi

I set sono un tipo speciale di collezione di dati che memorizza solo elementi unici. Una delle caratteristiche chiave dei set è che essi sono non ordinati. Questo significa che gli elementi del set non hanno un ordine fisso, e l'ordine degli elementi può cambiare ad ogni iterazione.

I set in Python sono implementati usando tabelle hash. Quando aggiungi un elemento a un set, Python ne calcola il valore hash e lo usa per determinare la posizione dell'elemento nella tabella hash. Questa struttura dati permette una rapida verifica di appartenenza, aggiunta e rimozione di elementi. Tuttavia, a causa dell'uso dei valori hash, l'ordine degli elementi non è mantenuto e non può essere previsto.

Esempio di disordine dei set

Consideriamo un semplice esempio:


my_set = {3, 1, 2}
for item in my_set:
    print(item)
    

Eseguendo questo codice, gli elementi possono essere stampati in qualsiasi ordine, ad esempio, 1 2 3 o 3 1 2. Questo significa che l'ordine di output degli elementi del set non è garantito e può cambiare ad ogni esecuzione del programma.

Importanza del disordine

Il disordine dei set ha diverse conseguenze importanti:

  • Assenza di indicizzazione: a differenza delle liste e delle tuple, i set non supportano l'accesso agli elementi tramite indice. Provare a eseguire my_set[0] genererà un errore.
  • Performance: Il disordine permette ai set di essere efficienti in termini di prestazioni, specialmente quando si aggiungono e si rimuovono elementi.
  • Unicità degli elementi: I set rimuovono automaticamente i duplicati, il che li rende utili per memorizzare dati unici.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION