2015-04-29 13 views
17

In Python è possibile utilizzare a.intersection(b) per trovare gli elementi comuni a entrambi i set.Di fronte a set.intersection in python?

C'è un modo per fare il disgiunto versione opposta di questo? Articoli che non sono comuni a entrambi a e b; gli oggetti unici in a unioned con gli articoli unici in b?

risposta

37

Si sta cercando la differenza simmetrica ; tutti gli elementi che appaiono solo in serie A o in serie B, ma non entrambi:

a.symmetric_difference(b) 

Dal set.symmetric_difference() method documentation:

Ritorna una nuova serie con elementi in entrambi i set o altri ma non entrambi.

È possibile utilizzare l'operatore ^ anche se entrambi a e b sono insiemi:

a^b 

mentre set.symmetric_difference() assume alcuna iterabile per l'altra tesi.

L'uscita è l'equivalente di (a | b) - (a & b), l'unione di due gradi meno l'intersezione di due insiemi.

+0

non^Is normalmente operatore XOR? – user4847061

+0

@ user4847061: lo è, ma i set hanno sovraccaricato molti di questi operatori. '|' e '&' sono normalmente OR bit a bit e AND bit a bit, ma sui set ti danno l'unione e l'intersezione. Anche gli operatori di confronto '<', '<=', '>' e '> =' sono stati sovraccaricati. –

Problemi correlati