lettura facile

L'intersezione tra insiemi in Python

In questa lezione ti spiego come ottenere l'intersezione tra due o più insiemi nel linguaggio Python.

Puoi calcolare l'intersezione dei due insiemi seguendo tre strade diverse

L'operatore di intersezione A&B

Per intersecare i due insiemi puoi usare l'operatore &

A&B

Ti faccio un esempio pratico.

Crea due insiemi nelle variabili A e B usando 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 intersezione A⋂B

>>> C
{4, 5}

L'intersezione restituisce un insieme composto da tutti gli elementi che appartengono sia all'insieme A e sia all'insieme B senza duplicazioni.

In questo caso sono gli elementi 4 e 5.

Gli elementi che appartengono solo a uno dei due insiemi sono esclusi.

Il metodo intersection()

Puoi calcolare l'intersezione tra due insiemi anche con il metodo .intersection() delle variabili set.

A.intersection(B)

Ti faccio un esempio pratico.

Crea due insiemi nelle variabili A e B

>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])

Digita A.intersection(B) sulla riga comando

>>> D=A.intersection(B)

In alternativa puoi anche digitare set.intersection(A,B) sulla riga di comando. Il risultato finale è lo stesso.

>>> D=set.intersection(A,B)

Il risultato è l'insieme A⋂B in cui si intersecano i due insiemi.

>>> D
{4, 5}

L'insieme di intersezione D è composto da tutti gli elementi che appartengono sia all'insieme A che all'insieme B senza ripetizioni.

In questo caso sono gli elementi 4 e 5.

Qual è la differenza tra l'operatore & e il metodo intersection()? L'operatore & e il metodo .intersection() sono due strade alternative per intersecare due insiemi. Il risultato finale è lo stesso. Tuttavia, il metodo .intersection() presenta molti vantaggi. Ad esempio, puoi applicare il metodo intersection() tra le variabili set e gli altri oggetti iterabili. Ad esempio, crea una variabile set A e una lista E

>>> A=set([1,2,3,4,5])
>>> E=[4,5,6,7]

Se utilizzi il metodo .intersection() sulla variabile set ottieni l'intersezione tra l'insieme (A) e la lista (E). Il risultato è ancora un insieme.

>>> A.intersection(E)
{4, 5}

Se invece intersechi la variabile set e la lista con l'operatore di intersezione A&E, il linguaggio Python restituisce un errore perché l'operatore & si può usare solo tra due variabili di tipo set.

>>> A&E
Traceback (most recent call last):
TypeError: unsupported operand type(s) for &: 'set' and 'list'

Inoltre, il metodo intersection() ti permette anche di intersecare contemporaneamente più insiemi tra loro.

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 interseca i tre insiemi tramite il metodo intersection()

>>> D=A.intersection(B,C)

Il risultato finale è l'insieme di intersezione D=A⋂B⋂C

L'unico elemento presente in tutti gli insiemi è il numero 4

>>> D
{4}

Il metodo intersection_update()

Il metodo intersection_update() interseca due o più insiemi tra loro modificando l'insieme in cui è applicato.

A.intersection_update(B)

Ti faccio un esempio pratico.

Crea tre insiemi nelle variabili A, B, C

 

>>> A=set([1,2,3,4,5])
>>> B=set([4,5,6,7])
>>> C=set([2,4,6,8])

Digita A.intersection(B,c) per ottenere l'intersezione tra i tre insiemi.

>>> A.intersection_update(B,C)

Il risultato è l'insieme intersezione A=A⋂B⋂C

Il risultato è l'insieme composto dal solo elemento in comune ossia il numero 4

>>> A
{4}

In questo caso il risultato modifica il contenuto dell'insieme A.

Qual è la differenza tra i metodi intersection e intersection_update? Il metodo intersection_update è simile al metodo intersection ma si distingue per un aspetto molto importante. Il metodo intersection() interseca gli insiemi senza modificare gli insiemi. Quindi, il risultato dell'intersezione è sempre un nuovo insieme. Viceversa, il metodo intersection_update() modifica l'insieme in cui è applicato.

A questo punto dovresti sapere come intersecare due o più insiemi in Python.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin