Os conjuntos, ou sets em Python, são uma das estruturas de dados mais úteis da linguagem. Eles permitem armazenar coleções de valores sem repetições, sendo ideais quando precisamos lidar com listas únicas e operações matemáticas como união e interseção.
Neste artigo, você vai aprender o que é um set, como criar, como usar seus métodos e quando ele é mais eficiente do que listas ou tuplas.
O que é um Set em Python
Um set é uma coleção não ordenada e sem elementos duplicados. Isso significa que, ao criar um set, o Python automaticamente remove qualquer valor repetido.
Exemplo básico
Python
numeros = {1, 2, 3, 3, 4}
print(numeros)Saída:
{1, 2, 3, 4}
O número 3 apareceu duas vezes na criação do conjunto, mas o Python o manteve apenas uma vez.
Os sets são úteis quando queremos garantir que não existam valores duplicados em nossos dados, como listas de e-mails, IDs de usuários ou nomes únicos.
Diferença entre Set, Lista e Tupla
| Tipo | Permite duplicados | É ordenado | Pode ser alterado |
|---|---|---|---|
| list | Sim | Sim | Sim |
| tuple | Sim | Sim | Não |
| set | Não | Não | Sim |
Essa tabela mostra que o set tem um comportamento único. Ele não mantém a ordem dos elementos e não aceita repetições.
Se você precisa apenas garantir unicidade, o set é a melhor escolha.
Como Criar um Set em Python
Existem várias maneiras de criar um set. A forma mais comum é usar chaves {} ou a função set().
Usando chaves
frutas = {"maçã", "banana", "laranja"}Usando a função set()
nomes = set(["Ana", "Bruno", "Carlos"])A diferença é que chaves criam diretamente um conjunto, enquanto set() pode converter outros tipos de dados, como listas ou tuplas, em conjuntos.
Adicionando e Removendo Elementos
Os conjuntos são mutáveis, ou seja, podemos adicionar ou remover elementos depois de criados.
Adicionar elementos
Use o método add():
Python
numeros = {1, 2, 3}
numeros.add(4)
print(numeros)Remover elementos
Existem três métodos principais:
remove()→ Remove o elemento e gera erro se ele não existir.discard()→ Remove o elemento, mas não gera erro se ele não existir.pop()→ Remove um elemento aleatório.
Exemplo:
numeros.remove(2)
numeros.discard(5)Operações Matemáticas com Conjuntos
Os conjuntos em Python têm métodos que simulam operações matemáticas tradicionais.
União (union)
Combina elementos de dois conjuntos, sem duplicatas.
Python
a = {1, 2, 3}
b = {3, 4, 5}
print(a.union(b)) # {1, 2, 3, 4, 5}Interseção (intersection)
Retorna apenas os elementos comuns.
print(a.intersection(b)) # {3}Diferença (difference)
Mostra o que está em a mas não em b.
print(a.difference(b)) # {1, 2}Diferença simétrica (symmetric_difference)
Mostra o que está em um dos conjuntos, mas não em ambos.
print(a.symmetric_difference(b)) # {1, 2, 4, 5}Essas operações são muito rápidas, pois o Python usa tabelas de hash para armazenar os valores dos conjuntos.
Verificando se um Elemento Está no Conjunto
Como o set usa uma estrutura eficiente de busca, é muito rápido verificar se um elemento está presente.
Python
frutas = {"maçã", "banana", "uva"}
print("banana" in frutas) # TrueEssa operação é muito mais rápida do que procurar em uma lista, especialmente quando há muitos elementos.
Iterando sobre um Set
Mesmo que o set não tenha ordem definida, você pode percorrê-lo com um for:
for fruta in frutas:
print(fruta)A ordem dos itens pode mudar a cada execução, pois o Python organiza internamente os elementos de forma otimizada.
Copiando e Limpando Conjuntos
Você pode copiar um conjunto com o método copy() e limpá-lo com clear().
Python
a = {1, 2, 3}
b = a.copy()
a.clear()
print(a) # set()
print(b) # {1, 2, 3}Quando Usar Sets no Seu Código
Use conjuntos quando:
- Você precisa garantir que os dados não tenham duplicados.
- Precisa fazer comparações rápidas entre grupos de dados.
- Deseja realizar operações matemáticas como união e interseção.
Por outro lado, evite sets quando:
- A ordem dos elementos é importante.
- Você precisa de índices (como
lista[0]).
Convertendo Entre Estruturas
Você pode converter facilmente entre listas, tuplas e conjuntos:
Python
lista = [1, 2, 2, 3]
conjunto = set(lista)
print(conjunto) # {1, 2, 3}
lista_nova = list(conjunto)
print(lista_nova) # [1, 2, 3]Isso é útil, por exemplo, para remover duplicatas de uma lista:
Python
emails = ["a@gmail.com", "b@gmail.com", "a@gmail.com"]
emails_unicos = list(set(emails))
print(emails_unicos)Métodos Mais Usados em Sets
| Método | Descrição |
|---|---|
add() | Adiciona um elemento |
remove() | Remove um elemento existente |
discard() | Remove sem erro caso não exista |
clear() | Remove todos os elementos |
union() | Une dois conjuntos |
intersection() | Retorna elementos em comum |
difference() | Mostra elementos únicos de um conjunto |
issubset() | Verifica se um conjunto é subconjunto de outro |
issuperset() | Verifica se contém todos os elementos de outro conjunto |
Exemplo Prático: Filtrando Dados Repetidos
Imagine que você tenha uma lista de visitantes de um site, com e-mails repetidos.
Python
visitantes = [
"joao@gmail.com", "ana@gmail.com", "joao@gmail.com", "maria@gmail.com"
]
unicos = set(visitantes)
print(unicos)Saída:
{'joao@gmail.com', 'ana@gmail.com', 'maria@gmail.com'}
Com uma única linha, você elimina repetições e mantém apenas os dados únicos.
Conclusão
Os sets em Python são ferramentas poderosas e simples de usar.
Eles ajudam a manter seus dados organizados, sem duplicações, e facilitam operações de comparação e filtragem.
Saber quando e como utilizá-los pode tornar seu código mais rápido e limpo, especialmente quando trabalhamos com grandes quantidades de informações.
Perguntas Frequentes (FAQ)
1. O que é um set em Python?
É uma coleção que não permite elementos repetidos e não mantém ordem.
2. Como criar um set?
Use {} ou a função set(), como set([1, 2, 3]).
3. Sets aceitam valores duplicados?
Não, qualquer valor repetido é automaticamente removido.
4. Posso acessar elementos por índice?
Não, conjuntos não possuem índice nem ordem fixa.
5. Como remover um item de um set?
Use remove() ou discard().
6. Como saber se algo está no set?
Use o operador in, por exemplo: "banana" in frutas.
7. Posso juntar dois sets?
Sim, com o método union() ou o operador |.
8. Qual a diferença entre union e intersection?union combina todos os elementos, intersection pega apenas os comuns.
9. Como limpar um set?
Use clear() para remover todos os elementos.
10. Sets são rápidos?
Sim, pois usam uma estrutura chamada tabela de hash.
11. Quando evitar o uso de sets?
Quando você precisa de ordem ou acessar itens por posição.
12. Como remover duplicados de uma lista?
Converta para set: list(set(lista)).

