Diferença simétrica dos conjuntos do Python

Resumo: neste tutorial, você aprenderá como encontrar a diferença simétrica entre dois ou mais conjuntos em Python.

Introdução à diferença simétrica de conjuntos

A diferença simétrica entre dois conjuntos é um conjunto de elementos que estão em qualquer um dos conjuntos, mas não em sua interseção.

Suponha que você tenha os seguintes conjuntos s1 e s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

A diferença simétrica dos conjuntos s1 e s2 retorna o seguinte conjunto:

{'C#', 'Python'}

Como você pode ver claramente na saída, os elementos no conjunto de retorno estão definidos dentro de s1 ou s2, mas não em sua interseção.

O diagrama de Venn a seguir ilustra a diferença simétrica dos conjuntos s1 e s2:


Em Python, você pode encontrar a diferença simétrica de dois ou mais conjuntos usando o método symmetric_difference() ou o operador de diferença simétrica (^).

1) Usando o método symmetric_difference() para encontrar a diferença simétrica de conjuntos

O tipo Set possui o método symmetric_difference() que retorna a diferença simétrica de dois ou mais conjuntos:

new_set = set1.symmetric_difference(set2, set3,...)

Por exemplo, o seguinte encontra a diferença simétrica dos conjuntos s1 e s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

s = s1.symmetric_difference(s2)

print(s)

Saída:

{'C#', 'Python'}

Observe que o método symmetric_difference() retorna um novo conjunto e não modifica os conjuntos originais.

2) Usando o operador de diferença simétrica (^) para encontrar a diferença simétrica de conjuntos

Além de usar o método symmetric_difference() dos conjuntos, você pode usar o operador de diferença simétrica (^) para encontrar a diferença simétrica entre dois ou mais conjuntos:

new_set = set1 ^ set2 ^...

O exemplo a seguir mostra como aplicar o operador de diferença simétrica (^) aos conjuntos s1 e s2:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}

s = s1 ^ s2

print(s)

Saída:

{'Python', 'C#'}

O método symmetric_difference() vs operador de diferença simétrica (^)

O método symmetric_difference() aceita um ou mais iteráveis que podem ser strings, listas ou dicionários.

Se os iteráveis não forem conjuntos, o método irá convertê-los em conjuntos antes de retornar a diferença simétrica deles.

O exemplo a seguir mostra como usar o método symmetric_difference() para encontrar a diferença simétrica entre um conjunto e uma lista:

scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores.symmetric_difference(ratings)

print(new_set)

Saída:

{10, 7}

No entanto, o operador de diferença simétrica (^) só se aplica a conjuntos. Se você usá-lo com os iteráveis que não são conjuntos, receberá um erro. Por exemplo:

scores = {7, 8, 9}
ratings = [8, 9, 10]
new_set = scores ^ ratings

print(new_set)

Erro:

TypeError: unsupported operand type(s) for ^: 'set' and 'list'

Resumo

  • A diferença simétrica entre dois ou mais conjuntos é um conjunto de elementos que estão em todos os conjuntos, mas não em suas interseções.
  • Use o método symmetric_difference() dos conjuntos ou o operador de diferença simétrica (^) para encontrar a diferença simétrica de dois ou mais conjuntos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *