Unire i Set in Python
Scopri tutti i modi per unire i set Python: union(), update(), gli operatori | e |=, e i metodi in-place per intersezione, differenza e differenza simmetrica.
Python offre diversi modi per combinare due o più set in un'unica collezione. Questa pagina li illustra tutti — il metodo union(), il metodo update(), le rispettive scorciatoie tramite operatori (| e |=), l'unione di più di due set contemporaneamente e i relativi metodi in-place per intersezione, differenza e differenza simmetrica.
Confronto Rapido
| Obiettivo | Metodo | Operatore | Modifica l'originale? |
|---|---|---|---|
| Nuovo set con tutti gli elementi | union() | | | No — restituisce un nuovo set |
| Aggiunge tutti gli elementi in-place | update() | |= | Sì |
| Nuovo set — solo elementi comuni | intersection() | & | No |
| Mantiene solo gli elementi comuni | intersection_update() | &= | Sì |
| Nuovo set — elementi non presenti nell'altro | difference() | - | No |
| Rimuove gli elementi presenti nell'altro | difference_update() | -= | Sì |
| Nuovo set — elementi in uno ma non in entrambi | symmetric_difference() | ^ | No |
| Mantiene gli elementi in uno ma non in entrambi | symmetric_difference_update() | ^= | Sì |
Unire i Set con union()
union() restituisce un nuovo set contenente ogni elemento univoco da tutti i set passati. I set originali non vengono modificati.
Unione di due set in Python
Output (l'ordine può variare — i set non sono ordinati):
{'apple', 'banana', 'cherry', 'mango', 'orange'}Poiché set2 contiene già "banana", il risultato lo include una sola volta. Questa è la proprietà fondamentale di un set: nessun duplicato.
L'Operatore |
Il pipe | è l'equivalente operatore di union(). Produce lo stesso risultato ed è spesso più leggibile nelle espressioni.
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set3 = set1 | set2
print(set3)Output:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Quando usare | rispetto a union(): usa | per un'espressione rapida e leggibile tra due set. Usa union() quando devi passare direttamente qualsiasi altro iterabile (come una lista o una tupla) — union() accetta qualsiasi iterabile, mentre | richiede che entrambi gli operandi siano set.
# union() accepts any iterable
set1 = {1, 2, 3}
result = set1.union([4, 5], (6,)) # list and tuple both work
print(result)Output:
{1, 2, 3, 4, 5, 6}Unire i Set con update()
update() aggiunge tutti gli elementi da uno o più altri set (o da qualsiasi iterabile) nel set esistente. Modifica il set originale in-place e restituisce None.
Aggiornare un set con un altro set in Python
Output:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Dopo questa chiamata, set1 è cresciuto includendo tutti gli elementi univoci di set2. set2 rimane invariato.
L'Operatore |=
|= è l'equivalente in-place di update().
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set1 |= set2
print(set1)Output:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Unire Più di Due Set Contemporaneamente
Sia union() che update() accettano più argomenti, quindi è possibile combinare molti set in una singola chiamata.
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
result = A.union(B, C)
print(result)Output:
{1, 2, 3, 4, 5, 6, 7}Lo stesso vale per update():
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
A.update(B, C)
print(A)Output:
{1, 2, 3, 4, 5, 6, 7}È anche possibile concatenare l'operatore | su più set:
result = {1, 2} | {3, 4} | {5, 6}
print(result)Output:
{1, 2, 3, 4, 5, 6}Metodi In-Place Correlati per l'Unione
Lo stesso schema in-place vs. nuovo set si applica a tutte le altre operazioni sui set. Vale la pena conoscerli insieme a update().
intersection_update() e &=
Mantiene solo gli elementi presenti in tutti i set specificati.
A = {1, 2, 3, 4}
B = {2, 3, 5}
A.intersection_update(B)
print(A) # only elements in both A and BOutput:
{2, 3}difference_update() e -=
Rimuove ogni elemento che è presente anche nell'altro set.
A = {1, 2, 3, 4}
B = {2, 4}
A.difference_update(B)
print(A) # elements in A that are not in BOutput:
{1, 3}symmetric_difference_update() e ^=
Mantiene solo gli elementi presenti in esattamente uno dei due set — gli elementi condivisi da entrambi vengono scartati.
A = {1, 2, 3}
B = {2, 3, 4}
A.symmetric_difference_update(B)
print(A) # elements in A or B, but not in bothOutput:
{1, 4}union() vs update() — Quale Usare?
Usa union() (o |) quando vuoi mantenere intatti i set originali e lavorare con il risultato combinato come valore separato. È la scelta giusta all'interno di espressioni, valori di ritorno di funzioni e ovunque l'immutabilità sia importante.
Usa update() (o |=) quando stai costruendo un set in modo incrementale e non hai bisogno di preservare l'originale. Utilizza leggermente meno memoria perché non crea un oggetto aggiuntivo.
# Reading pattern: create a single combined set from several sources
all_tags = set()
for article in articles:
all_tags.update(article["tags"]) # update() is natural hereArgomenti Correlati
- Python Sets — cosa sono i set, come crearli e le loro proprietà principali
- Add Set Items — aggiungere singoli elementi e elementi multipli a un set
- Remove Set Items —
remove(),discard()epop() - Access Set Items — verifica dell'appartenenza e iterazione
- Loop Sets — iterare sugli elementi di un set con
for - Set Methods — riferimento completo per tutti i metodi built-in dei set