W3docs

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

ObiettivoMetodoOperatoreModifica l'originale?
Nuovo set con tutti gli elementiunion()|No — restituisce un nuovo set
Aggiunge tutti gli elementi in-placeupdate()|=
Nuovo set — solo elementi comuniintersection()&No
Mantiene solo gli elementi comuniintersection_update()&=
Nuovo set — elementi non presenti nell'altrodifference()-No
Rimuove gli elementi presenti nell'altrodifference_update()-=
Nuovo set — elementi in uno ma non in entrambisymmetric_difference()^No
Mantiene gli elementi in uno ma non in entrambisymmetric_difference_update()^=

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

python— editable, runs on the server

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

python— editable, runs on the server

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 B

Output:

{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 B

Output:

{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 both

Output:

{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 here

Argomenti 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 Itemsremove(), discard() e pop()
  • 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

Esercitazione

Pratica
Which of the following statements about joining sets in Python are correct?
Which of the following statements about joining sets in Python are correct?
Was this page helpful?