HOWTO · Python
Come unire due set in Python
Questo articolo tutorial introduce come unire due set in Python.
In questa pagina
I set di Python memorizzano elementi unici, quindi unire due set significa calcolarne l’unione: una collezione che contiene ogni elemento presente in uno dei due set, con i duplicati ridotti a uno solo. Puoi farlo con l’operatore |, il metodo union() o le forme in-place update() e |=, a seconda che tu voglia un nuovo set o preferisca modificarne uno esistente.
Unire i set con l’operatore di unione (|)
L’operatore di unione | accetta due set e restituisce un nuovo set contenente ogni elemento che compare in uno dei due. I set originali non vengono modificati.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
result_set = set1 | set2
print(result_set)
print(set1)
print(set2)
Output:
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4}
{3, 4, 5, 6}
I valori condivisi 3 e 4 compaiono una sola volta in result_set, mentre set1 e set2 mantengono i loro elementi originali. Entrambi gli operandi di | devono essere simili a un set (set o frozenset); combinare un set con una lista usando | genera un TypeError, quindi converti prima la lista con set().
Aggiungere elementi a un set esistente con update() o |=
Quando vuoi che un set esistente assorba gli elementi di un’altra collezione invece di costruirne uno nuovo, usa il metodo update() o l’assegnazione aumentata |=. Entrambe le forme modificano il set sul lato sinistro invece di restituirne uno nuovo.
Le due forme differiscono in ciò che accettano: update() accetta qualsiasi iterabile — un set, una lista, una tupla o una stringa — mentre |= richiede un operando destro simile a un set, con le stesse restrizioni di |.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
numbers = {1, 2, 3}
numbers.update([3, 4, 5])
print(numbers)
numbers |= {6, 7}
print(numbers)
Output:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
La chiamata update() aggiunge i nuovi valori della lista direttamente a numbers, e |= unisce poi il secondo set nello stesso oggetto. Usa queste forme solo quando la mutazione è voluta, perché ogni altro riferimento a quel set vede il cambiamento.
Usare union() per unire più set o iterabili
Il metodo union() è la controparte sotto forma di metodo dell’operatore |. Restituisce un nuovo set e lascia invariati i suoi input, ma a differenza dell’operatore accetta un numero qualsiasi di argomenti, e ogni argomento può essere un iterabile qualsiasi, non solo un set.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
result_set = set1.union(set2, {7, 8}, [9, 10])
print(result_set)
print(set1)
Output:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1, 2, 3, 4}
Qui union() unisce un set, un letterale di set e una lista in un’unica chiamata, mentre set1 mantiene i suoi elementi originali. Quando ogni operando è già un set, a.union(b) produce lo stesso risultato di a | b.
Scegliere l’operazione in base alla necessità di un nuovo set
Scegli la forma in base al risultato che vuoi ottenere:
- Ti serve un nuovo set e vuoi preservare gli originali: usa
|quando entrambi gli operandi sono set, oppureunion()quando un operando è una lista o un altro iterabile, oppure quando combini tre o più collezioni. - Vuoi modificare un set esistente: usa
update()per qualsiasi iterabile, oppure|=quando l’operando è un set. - Stai leggendo codice esistente:
a.union(b)ea | bsignificano la stessa cosa per i set, ea.update(b)ea |= bsono le loro controparti in-place.
Nella maggior parte del codice, result = set1 | set2 è la risposta diretta per unire due set; ricorri a union() quando gli operandi potrebbero non essere set, e a update() o |= solo quando la mutazione in-place è l’obiettivo.