Sets em Python são coleções não ordenadas de elementos únicos. Isso significa que valores duplicados são automaticamente eliminados e a ordem em que você adiciona elementos não afeta como eles são armazenados ou recuperados. Sets são mutáveis (modificáveis) por padrão, a menos que você use o tipo frozenset
, que é imutável.
Sets são particularmente úteis para tarefas que exigem teste eficiente de pertinência (verificar se um elemento existe), remover duplicatas de uma lista e realizar operações de conjuntos, como união, interseção e diferença.
Sumário
- Criando Sets
- Adicionando e Atualizando Elementos
- Removendo Elementos
- Operações de Conjuntos
- Métodos de Conjuntos
- Outras Operações de Conjuntos
- Funções Integradas com Sets
- Frozensets
1. Criando Sets
Você pode criar sets usando chaves {}
ou o construtor set()
. Note que um conjunto vazio deve ser criado usando set()
; {}
cria um dicionário vazio.
# Usando chaves
meu_set = {1, 2, 3, 4, 5}
print(meu_set) # Saída: {1, 2, 3, 4, 5}
# Usando o construtor set()
outro_set = set([6, 7, 8, 8]) # Duplicatas são automaticamente removidas
print(outro_set) # Saída: {8, 6, 7}
conjunto_vazio = set()
print(conjunto_vazio) # Saída: set()
Lembre-se que sets são não ordenados, então a ordem de saída pode diferir da ordem de entrada.
2. Adicionando e Atualizando Elementos
Use o método add()
para adicionar um único elemento e o método update()
para adicionar múltiplos elementos.
meu_set = {1, 2, 3}
meu_set.add(4)
print(meu_set) # Saída: {1, 2, 3, 4}
meu_set.update([5, 6, 7])
print(meu_set) # Saída: {1, 2, 3, 4, 5, 6, 7}
meu_set.update({8, 9}, (10,)) # Atualiza com set e tupla
print(meu_set) # Saída: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
3. Removendo Elementos
Vários métodos permitem a remoção de elementos. remove()
levanta um KeyError
se o elemento não for encontrado, enquanto discard()
não.
meu_set = {1, 2, 3, 4, 5}
meu_set.remove(3) # Levanta KeyError se o elemento não for encontrado
print(meu_set) # Saída: {1, 2, 4, 5}
meu_set.discard(6) # Não levanta erro se o elemento não for encontrado
print(meu_set) # Saída: {1, 2, 4, 5}
elemento_removido = meu_set.pop() # Remove e retorna um elemento arbitrário
print(elemento_removido) # Saída: (um elemento aleatório)
print(meu_set)
meu_set.clear() # Remove todos os elementos
print(meu_set) # Saída: set()
4. Operações de Conjuntos
Sets suportam operações de conjuntos matemáticas padrão:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# União: combina elementos de ambos os sets
uniao_set = set1 | set2 # ou set1.union(set2)
print(uniao_set) # Saída: {1, 2, 3, 4, 5}
# Interseção: elementos presentes em ambos os sets
intersecao_set = set1 & set2 # ou set1.intersection(set2)
print(intersecao_set) # Saída: {3}
# Diferença: elementos em set1 mas não em set2
diferenca_set = set1 - set2 # ou set1.difference(set2)
print(diferenca_set) # Saída: {1, 2}
# Diferença Simétrica: elementos em set1 ou set2, mas não em ambos
diferenca_simetrica_set = set1 ^ set2 # ou set1.symmetric_difference(set2)
print(diferenca_simetrica_set) # Saída: {1, 2, 4, 5}
5. Métodos de Conjuntos
Python oferece muitos métodos integrados para manipulação de sets:
meu_set = {1, 2, 3, 4, 5}
print(meu_set.issubset({1, 2, 3, 4, 5, 6})) # True
print(meu_set.issuperset({1, 2})) # True
print(meu_set.isdisjoint({6, 7, 8})) # True - nenhum elemento em comum
print(meu_set.copy()) # cria uma cópia superficial do set
6. Outras Operações de Conjuntos
Além das operações básicas, você pode verificar a pertinência, encontrar o comprimento e muito mais:
meu_set = {1, 2, 3}
print(1 in meu_set) # Saída: True
print(4 not in meu_set) # Saída: True
print(len(meu_set)) # Saída: 3
7. Funções Integradas com Sets
Funções como all()
, any()
, sum()
, min()
, max()
funcionam com sets:
meu_set = {1, 2, 3, 4, 5}
print(sum(meu_set)) # Saída: 15
print(min(meu_set)) # Saída: 1
print(max(meu_set)) # Saída: 5
print(all(x > 0 for x in meu_set)) # Saída: True
print(any(x == 0 for x in meu_set)) # Saída: False
8. Frozensets
frozenset
cria um set imutável. Uma vez criado, você não pode adicionar ou remover elementos. Eles são úteis como chaves de dicionário ou elementos de outros sets.
meu_frozenset = frozenset({1, 2, 3})
# meu_frozenset.add(4) # Isso levantará um AttributeError
print(meu_frozenset) # Saída: frozenset({1, 2, 3})