Learning Hub Logo

Sobre Diego Pinho

Professor especialista em tecnologia com mais de 10 anos de experiência. Autor de livros técnicos e criador de cursos que já impactaram milhares de estudantes.

Visite meu site principal →

Serviços

  • Área do Aluno
  • Consultoria Personalizada
  • Cursos Completos
  • Trabalhe Conosco

Redes Sociais

  • Youtube
  • TikTok
  • Instagram
  • LinkedIn

Links

  • Nosso Blog
  • Learning Hub
  • Cursos Online
  • Livros Publicados

Professor Diego Pinho

Educação, Tecnologia e IA © 2026

Python›Operações entre conjuntos

Operações entre conjuntos

Utilizando as operações da matemática nos conjuntos do Python

📖4 min de leitura

Depois de aprender o que são conjuntos, como criá-los, como funcionam suas regras e como manipulá-los no dia a dia, chegou agora a parte que conecta diretamente a programação com a matemática: as operações entre conjuntos.

Os operadores

Se você já viu conceitos como união, interseção e diferença na escola, vai perceber que o Python segue exatamente a mesma lógica, só muda a forma de escrever.

Mesmo que esses nomes não estejam tão frescos na memória, não tem problema: ao longo deste artigo vamos relembrar o que cada operação significa e ver como aplicá‑las no código passo a passo.

União

A união junta todos os elementos dos conjuntos unidos. Se temos um conjunto A e um conjunto B, o resultado será todos os elementos dentro dos dois, mas sem repetir valores que possam ser iguais entre os conjuntos.

Na matemática, essa operação é representada por A ∪ B. Já em Python, ela é representada por | ou .union():

1A = {1, 2, 3} 2B = {3, 4, 5} 3 4print(A.union(B)) 5print(A | B) 6 7# Saída possível: 8# {1, 2, 3, 4, 5} 9# {1, 2, 3, 4, 5}

No mundo real, esse operador pode ser útil quando queremos ter uma lista com todos os alunos que fazem matérias de um curso ou unir listas de tarefas de duas equipes que passaram a trabalhar juntas, por exemplo.

Interseção

A interseção encontra somente os itens que estão presentes em todos os conjuntos avaliados. Na matemática, representamos por A ∩ B.

Ela é representada por & ou .intersection() em Python:

1A = {1, 2, 3} 2B = {3, 4, 5} 3 4

Essa operação é útil para situações como: descobrir quem são as pessoas inscritas em dois cursos ao mesmo tempo ou identificar produtos que aparecem tanto na lista de favoritos quanto no carrinho de um usuário.

Diferença

A diferença pega os itens que estão em um conjunto, mas que não estão nos outros. Ou seja, se temos os conjuntos A e B, ele considera tudo que está só em A, desconsiderando o que está em A mas também está em B e o que está só em B.

Na matemática indicamos como A − B. Em Python, podemos representar da mesma maneira, com o sinal de menos (-), ou com a função .difference():

1A = {1, 2, 3} 2B = {3, 4, 5} 3 4

Apesar de não alterar nada na união e na interseção, aqui a ordem importa! A - B é diferente de B - A:

1A = {1, 2, 3} 2B = {3, 4, 5} 3 4

Quando queremos encontrar alunos que faltaram (presentes na lista de matriculados, mas não na lista de presença) ou detectar produtos removidos entre duas versões de um catálogo, podemos utilizar esse operador.

Diferença simétrica

Vimos que o operador de diferença considera o que está em A que não está em B. Já a diferença simétrica pega tudo que está em A que não está em B E tudo que está em B que não está em A. Ou seja, ela pega tudo que está em A OU B, mas não o que está nos dois ao mesmo tempo.

Ela é representada matematicamente por A △ B.

Apesar de ser chamada de diferença, ela está bem relacionada com a interseção, já que essa operação considera tudo que não é a interseção entre os conjuntos analisados. Ela é o inverso da interseção.

O símbolo ^ ou a função .symmetric_difference() são usadas para representá-la em Python:

1A = {1, 2, 3} 2B = {3, 4, 5} 3 4

Essa operação é útil para identificar o que mudou entre duas coleções, como descobrir campos diferentes entre duas versões de um formulário.

Aqui, os campos "nome" e "email" são iguais entre as duas versões. Já os campos "telefone" e "endereco" estão presentes só em uma das versões:

1formulario_antigo = {"nome", "telefone", "email"} 2formulario_novo = {"nome", "email", "endereco"} 3 4

Usando um operador várias vezes

Nos exemplos acima, realizamos operações entre 2 conjuntos para facilitar a visualização de cada conceito, mas você pode utilizar operadores com vários conjuntos ao mesmo tempo.

Observe:

1A = {1, 2, 3, 4} 2B = {2, 3, 5} 3C

Combinando operações

Além de poder usar um mesmo operador várias vezes, você também pode combinar diferentes operadores de uma só vez. Isso é muito comum tanto na matemática quanto na programação.

Vamos começar com um exemplo simples:

1A = {1, 2, 3, 4} 2B = {3, 4, 5} 3C

Pode surgir a dúvida sobre como fazer essas operações. A ordem correta segue a mesma ideia das operações matemáticas e do que vimos sobre os operadores em Python: existe uma ordem pré-determinada que define qual operação acontece primeiro e quais acontecem depois.

Ordem de precedência dos operadores de conjuntos

Nos conjuntos, devemos seguir essa ordem para ir resolvendo as operações:

  1. Interseção (&)
  2. Diferença (-)
  3. União (|)
  4. Diferença simétrica (^)

Ou seja, o Python sempre resolve primeiro interseções, depois diferenças, depois uniões e só então diferenças simétricas, a menos que você use parênteses para mudar essa ordem.

Usando parênteses para controlar a lógica

Assim como na matemática, você pode usar parênteses para deixar sua intenção clara e evitar sustos:

1A = {1, 2, 3, 4} 2B = {3, 4, 5} 3C

Dica: Ao combinar operadores, a regra de ouro é que você pode usar vários juntos à vontade, desde que não vire um monstrinho difícil de entender. Legibilidade em primeiro lugar!


Com isso, você já sabe aplicar operações poderosas em seus códigos. Essas ferramentas serão muito úteis quando você começar a trabalhar com conjuntos maiores e quiser comparar dados de forma rápida.

← AnteriorManipulando conjuntosPróximo →Dicionários
print
(
A
.
intersection
(
B
)
)
5print(A & B)
6
7# Saída:
8# {3}
9# {3}
print
(
A
.
difference
(
B
)
)
5print(A - B)
6
7# Saída possível:
8# {1, 2}
9# {1, 2}
print
(
A
-
B
)
5print(B - A)
6
7# Saída possível:
8# {1, 2}
9# {4, 5}
print
(
A
.
symmetric_difference
(
B
)
)
5print(A ^ B)
6
7# Saída possível:
8# {1, 2, 4, 5}
9# {1, 2, 4, 5}
print
(
formulario_antigo
&
formulario_novo
)
5print(formulario_antigo ^ formulario_novo)
6
7# Saída possível:
8# {'nome', 'email'}
9# {'telefone', 'endereco'}
=
{
3
,
6
}
4
5print (A | B | C)
6print(A.intersection(B, C))
7
8# Saída:
9# {3}
10# {3}
=
{
4
,
6
}
4
5resultado = A - B | C
6print(resultado)
7
8# Saída possível:
9# {1, 2, 4, 6}
=
{
4
,
6
}
4
5sem_parenteses = A - B | C
6# Passo 1: A - B → {1, 2}
7# Passo 2: ({1, 2}) | C → {1, 2, 4, 6}
8
9com_parenteses = A - (B | C)
10# Passo 1: B | C → {3, 4, 5, 6}
11# Passo 2: A - ({3, 4, 5, 6}) → {1, 2}
12
13print(sem_parenteses)
14print(com_parenteses)
15
16# Saída possível:
17# {1, 2, 4, 6}
18# {1, 2}