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.