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 na sua intersecção.
Suponha que você tenha o seguinte s1
e s2
conjuntos:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}
Linguagem de código: JavaScript ( javascript )
A diferença simétrica dos conjuntos s1
e s2
retorna no seguinte conjunto:
{'C#', 'Python'}
Linguagem de código: JavaScript ( javascript )
Como você pode ver claramente na saída, os elementos no conjunto de retorno estão dentro s1
ou s2
definidos, mas não em sua interseção.
O seguinte diagrama de Venn 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 symmetric_difference()
método set 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 Set
tipo possui o symmetric_difference()
método 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)
Linguagem de código: PHP ( php )
Saída:
{'C#', 'Python'}
Linguagem de código: JavaScript ( javascript )
Observe que o symmetric_difference()
método 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 symmetric_difference()
método set, 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)
Linguagem de código: PHP ( php )
Saída:
{'Python', 'C#'}
Linguagem de código: JavaScript ( javascript )
O symmetric_difference()
método vs operador de diferença simétrica (^)
O symmetric_difference()
método 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 symmetric_difference()
método 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)
Linguagem de código: PHP ( php )
Saída:
{10, 7}
No entanto, o operador de diferença simétrica ( ^
) só se aplica a conjuntos. Se você usá-lo com 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)
Linguagem de código: PHP ( php )
Erro:
TypeError: unsupported operand type(s) for ^: 'set' and 'list'
Linguagem de código: JavaScript ( javascript )
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
symmetric_difference()
método set ou o operador de diferença simétrica (^
) para encontrar a diferença simétrica de dois ou mais conjuntos.