2015-04-29 15 views
17

W języku Python można użyć pozycji a.intersection(b), aby znaleźć elementy wspólne dla obu zestawów.Przeciwieństwem setIntersection w python?

Czy istnieje sposób na rozłączenie z przeciwną wersją tego? Elementy, które nie są wspólne dla obydwu modeli: a i b; unikalne przedmioty w a połączone z unikalnymi przedmiotami w b?

Odpowiedz

37

Poszukujesz różnicy symetrycznej ; Wszystkie elementy, które pojawiają się tylko ustawić lub w zbiorze B, ale nie oba:

a.symmetric_difference(b) 

Z set.symmetric_difference() method documentation:

Zwraca nowy zestaw z elementów w każdym zestawie lub inne ale nie obie.

Można użyć operatora ^ też, jeśli zarówno a i b są zestawy:

a^b 

podczas set.symmetric_difference() bierze dowolny iterable dla drugiej argument.

Wynik jest równoważny z (a | b) - (a & b), połączenie obu zestawów minus przecięcie obu zestawów.

+0

Nie jest^normalnym operatorem XOR? – user4847061

+0

@ user4847061: jest, ale zestawy mają przeciążone kilka takich operatorów. '|' i '&' są zwykle bitowe OR i bitowe AND, ale na zestawach dają ci związek i przecięcie. Operatory porównania '<', '<=', '>' i '> =' również zostały przeciążone. –

Powiązane problemy