Insiemi Python: operazioni, metodi e teoria degli insiemi

Set principali in Python. Impara a memorizzare valori univoci, eseguire intersezioni, unioni, differenze e comprendere i vantaggi prestazionali dell'hashing.

Prova nell'editor

Panoramica

Un Set è una raccolta non ordinata di elementi univoci in Python. I set sono costruiti su tabelle hash, il che li rende altamente ottimizzati per i test di appartenenza, determinando se un elemento specifico è all'interno della raccolta. Mentre controllare se un elemento è in un elenco richiede la scansione di ogni elemento (un'operazione `O(N)`), il controllo dell'appartenenza a un set viene eseguito in tempo costante `O(1)`. Ciò rende i set incredibilmente potenti per l'eliminazione dei duplicati e il filtraggio dei dati in blocco.

Gli insiemi vengono inizializzati utilizzando le parentesi graffe `{}` contenenti valori (senza due punti) o utilizzando il costruttore `set()` integrato. Si noti che poiché le parentesi graffe vengono utilizzate anche per i dizionari, scrivere parentesi graffe vuote `{}` inizializza un dizionario vuoto. Per inizializzare un set vuoto, è necessario utilizzare `set()`. Gli elementi all'interno di un set devono essere hashable e immutabili, il che significa che puoi memorizzare numeri, stringhe e tuple, ma non puoi memorizzare elenchi o dizionari all'interno di un set.

Oltre ai metodi di addizione e cancellazione di base, gli insiemi Python supportano nativamente le operazioni della teoria matematica degli insiemi. Ciò include Unione (`|` o `.union()`) per unire raccolte, Intersezione (`&` o `.intersection()`) per trovare elementi comuni, Differenza (`-` o `.difference()`) per trovare elementi univoci di una raccolta e Differenza simmetrica (`^`) per recuperare elementi in uno dei due set ma non in entrambi. Il mastering dei set consente di risolvere problemi di raggruppamento complessi con codice pulito, performante e leggibile.

Codice e output di esecuzione

Rimozione di duplicati da un elenco ed esecuzione di operazioni matematiche sugli insiemi.

sets_demo.py
Prova nell'editor
# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
Uscita terminale
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

Implementazione passo dopo passo

  • Rimozione di voci duplicate dai risultati API o dai file CSV
  • Determinazione degli elementi comuni tra due database
  • Esecuzione di operazioni di ricerca rapida su elenchi di ID di grandi dimensioni

Domande frequenti

Gli elementi di un insieme sono ordinati?

No, i set non sono ordinati. Non è possibile accedere agli elementi tramite un indice (come set[0]) o suddividerli.

Come faccio ad aggiungere o rimuovere elementi in un set?

Utilizza il metodo .add() per inserire un singolo elemento e .remove() o .discard() per rimuoverne uno. .discard() è più sicuro in quanto non genera un errore se manca l'elemento.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.