Tudo sobre Sets em Python
Sets (conjuntos) são uma estrutura de dados fundamental em Python que armazenam coleções não ordenadas, mutáveis e de elementos únicos. Eles são especialmente úteis para operações matemáticas como uniões, interseções e diferenças, além de serem altamente eficientes para verificar a existência de elementos. Neste guia completo, vamos explorar tudo o que você precisa saber sobre sets em Python.
1. O que são Sets?
Sets são coleções que:
Não permitem elementos duplicados (automaticamente removem duplicatas)
Não são ordenados (não possuem índices)
São mutáveis (podemos adicionar ou remover elementos)
Aceitam apenas tipos imutáveis como elementos (números, strings, tuplas), mas não listas ou outros sets
2. Como Criar um Set
- Usando chaves
{}
frutas = {"maçã", "banana", "laranja"}
print(frutas) # Saída: {'banana', 'laranja', 'maçã'} (ordem pode variar)
- Usando
set()
numeros = set([1, 2, 3, 2, 1]) # Remove duplicatas automaticamente
print(numeros) # Saída: {1, 2, 3}
Set vazio
vazio = set() # {} cria um dicionário vazio, não um set!
3. Operações Básicas com Sets
Adicionando Elementos
frutas = {"maçã", "banana"}
frutas.add("laranja")
print(frutas) # Saída: {'maçã', 'banana', 'laranja'}
Adicionando Múltiplos Elementos
frutas.update(["uva", "abacaxi"]) # Aceita qualquer iterável
print(frutas) # Saída: {'uva', 'abacaxi', 'maçã', 'banana', 'laranja'}
Removendo Elementos
frutas.remove("maçã") # Levanta KeyError se o elemento não existir
frutas.discard("kiwi") # Não levanta erro se o elemento não existir
print(frutas) # Saída: {'uva', 'abacaxi', 'banana', 'laranja'}
4. Operações Matemáticas com Sets
- União (
|
ouunion()
)
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # Saída: {1, 2, 3, 4, 5}
- Interseção (
&
ouintersection()
)
print(a & b) # Saída: {3}
- Diferença (
-
oudifference()
)
print(a - b) # Saída: {1, 2}
- Diferença Simétrica (
^
ousymmetric_difference()
)
print(a ^ b) # Saída: {1, 2, 4, 5}
5. Verificação de Existência (Forma Aplicada)
- Usando
if in
estoque_frutas = {"maçã", "banana", "laranja"}
# Verificação prática em um sistema de estoque
fruta_procurada = "banana"
if fruta_procurada in estoque_frutas:
print(f"ATENÇÃO: {fruta_procurada} precisa de reposição!")
# Aqui viria a lógica de reposição no sistema real
else:
print(f"INFO: {fruta_procurada} não está cadastrada no sistema")
- Usando
for in
+if
(Quando precisa de lógica adicional)
pedidos = ["maçã", "uva", "banana"]
estoque = {"maçã", "banana", "laranja"}
# Processamento de pedidos com verificação de estoque
for fruta in pedidos:
if fruta in estoque:
# Lógica de processamento do pedido
print(f"Processando pedido de {fruta}...")
else:
print(f"ALERTA: {fruta} fora de estoque!")
6. Métodos Úteis de Sets
Método | Descrição | Exemplo |
---|---|---|
add() | Adiciona um elemento | s.add(4) |
clear() | Remove todos os elementos | s.clear() |
copy() | Retorna uma cópia do set | s2 = s.copy() |
difference_update() | Remove elementos de outro set | s.difference_update({1, 2}) |
isdisjoint() | Verifica se não há elementos em comum | s.isdisjoint({5, 6}) |
issubset() | Verifica se é subconjunto | s.issubset({1, 2, 3, 4}) |
issuperset() | Verifica se é superconjunto | s.issuperset({1, 2}) |
pop() | Remove e retorna um elemento aleatório | s.pop() |
remove() | Remove um elemento específico | s.remove(2) |
7. Frozen Sets (Sets Imutáveis)
São versões imutáveis de sets, úteis para usar como chaves em dicionários.
congelado = frozenset(["a", "b", "c"])
print(congelado) # Saída: frozenset({'a', 'b', 'c'})