Diferença Simétrica 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 na sua intersecção.

Suponha que você tenha o seguinte s1e s2conjuntos:

s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}Linguagem de código:  JavaScript  ( javascript )

A diferença simétrica dos conjuntos s1e s2retorna 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 s1ou s2definidos, mas não em sua interseção.

O seguinte diagrama de Venn ilustra a diferença simétrica dos conjuntos s1e s2:

Diferença simétrica Python de dois conjuntos

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 Settipo 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 s1e 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 s1e 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.

Deixe um comentário

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