
La differenza tra insiemi in Python
In questa lezione ti spiego come calcolare la differenza tra due o più insiemi nel linguaggio Python.
Per ottenere la differenza degli insiemi puoi seguire strade diverse.
L'operatore di differenza A-B
Per calcolare la differenza tra due insiemi usa l'operatore -
A-B
Ti faccio un esempio pratico.
Crea due insiemi nelle variabili A e B tramite la funzione set().
>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])
Digita C=A-B sulla riga di comando
>>> C=A-B
Il risultato è l'insieme differenza A-B
>>> C
{1, 2, 3}
L'insieme differenza è composto dagli elementi dell'insieme A che non appartengono anche all'insieme B.
In questo caso sono gli elementi 1, 2 e 3.
Il metodo difference()
Per la calcolare la differenza tra due insiemi puoi anche usare il metodo .difference() delle variabili set.
A.difference(B)
Ti faccio un esempio pratico.
Crea due insiemi A e B
>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])
Digita A.difference(B) sulla riga comando
>>> D=A.difference(B)
In alternativa puoi usare anche la sintassi set.difference(A,B). Il risultato è sempre lo stesso.
>>> D=set.difference(A,B)
Il risultato è l'insieme differenza A-B.
>>> D
{1, 2, 3}
L'insieme differenza D è composto dagli elementi dell'insieme A che non appartengono anche all'insieme B.
In questo caso sono gli elementi 1, 2 e 3.
Qual è la differenza tra l'operatore A-B e il metodo difference(A,B)? L'operatore meno - e il metodo .difference() ti permettono di raggiungere lo stesso obiettivo, ossia l'insieme differenza A-B. Tuttavia, il metodo .difference() è molto più completo. Ad esempio, puoi usare il metodo difference() tra variabili set e altri oggetti iterabili (liste, tuple, ecc.). Ad esempio, crea una variabile set A e una lista E
>>> A=set([1,2,3,4,5])
>>> E=[4,5,6,7]
Il metodo .difference() ti permette di ottenere la differenza tra l'insieme (A) e la lista (E). Il risultato è un insieme.
>>> A.difference(E)
{1, 2, 3}
L'operatore della differenza, invece, non ti permette di svolgere quest'ultima operazione. Quando digiti A-E il linguaggio Python restituisce un errore perché l'operatore della differenza tra insiemi - puoi usarlo solo se entrambe le variabili sono set.
>>> A-E
Traceback (most recent call last):
TypeError: unsupported operand type(s) for -: 'set' and 'list'
Inoltre, il metodo difference() ti consente di calcolare la differenza tra più insiemi in sequenza.
Ad esempio, definisci tre insiemi A, B e C
>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])
>>> C=set([2,4,6,8])
Poi calcola la differenza usando il metodo difference()
>>> D=A.difference(B,C)
Il risultato finale è l'insieme differenza D=(A-B)-C composto dagli elementi 1 e 3.
>>> D
{1, 3}
Il metodo difference_update()
Il metodo difference_update() calcola la differenza tra due insiemi modificando il contenuto dell'insieme in cui è applicato.
A.difference_update(B)
Ti faccio un esempio pratico.
Crea due insiemi nelle variabili A, B
>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])
Digita A.difference(B) per ottenere l'insieme differenza
>>> A.difference_update(B)
Il risultato è l'insieme differenza A=(A-B)-C composto dagli elementi
>>> A
{1, 2, 3}
In questo caso il risultato ha modificato il contenuto stesso dell'insieme A.
Qual è la differenza tra i metodi difference e difference_update? Entrambi i metodi calcolano la differenza tra due insiemi. Il metodo difference modifica il contenuto del primo insieme (minuendo) mentre il metodo difference_updare crea un nuovo insieme senza modificare gli insiemi utilizzati nell'operazione.