Conjuntos Python: operações, métodos e teoria dos conjuntos

Conjuntos mestres em Python. Aprenda a armazenar valores exclusivos, executar interseções, uniões, diferenças e compreender os benefícios de desempenho do hash.

Experimente no Editor

Visão geral

Um conjunto é uma coleção não ordenada de elementos únicos em Python. Os conjuntos são construídos em tabelas hash, o que os torna altamente otimizados para testes de associação – determinando se um elemento específico está dentro da coleção. Embora a verificação se um item está em uma lista exija a verificação de cada item (uma operação `O(N)`), a verificação da associação a um conjunto é executada em tempo constante `O(1)`. Isso torna os conjuntos incrivelmente poderosos para eliminação de duplicatas e filtragem de dados em massa.

Os conjuntos são inicializados usando chaves `{}` contendo valores (sem dois pontos) ou usando o construtor `set()` integrado. Observe que, como chaves também são usadas para dicionários, escrever chaves vazias `{}` inicializa um dicionário vazio. Para inicializar um conjunto vazio, você deve usar `set()`. Os elementos dentro de um conjunto devem ser hasháveis ​​e imutáveis, o que significa que você pode armazenar números, strings e tuplas, mas não pode armazenar listas ou dicionários dentro de um conjunto.

Além dos métodos básicos de adição e exclusão, os conjuntos Python suportam nativamente operações da Teoria Matemática dos Conjuntos. Isso inclui União (`|` ou `.union()`) para mesclar coleções, Interseção (`&` ou `.intersection()`) para encontrar elementos comuns, Diferença (`-` ou `.difference()`) para encontrar elementos exclusivos de uma coleção e Diferença Simétrica (`^`) para recuperar itens em qualquer conjunto, mas não em ambos. Dominar conjuntos permite resolver problemas complexos de agrupamento com código limpo, de alto desempenho e legível.

Saída de código e execução

Removendo duplicatas de uma lista e realizando operações matemáticas de conjuntos.

# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
Saída terminal
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

Implementação passo a passo

  • Removendo entradas duplicadas de resultados de API ou arquivos CSV
  • Determinando elementos comuns entre dois bancos de dados
  • Executando operações de pesquisa rápida em grandes listas de IDs

Perguntas frequentes

Os elementos de um conjunto estão ordenados?

Não, os conjuntos não estão ordenados. Você não pode acessar elementos por um índice (como set[0]) ou dividi-los.

Como adiciono ou removo elementos de um conjunto?

Use o método .add() para inserir um único elemento e .remove() ou .discard() para remover um. .discard() é mais seguro porque não gera um erro se o elemento estiver faltando.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.