Python Coleções Básico
Conjuntos
Um conjunto (set) em Python é uma coleção não ordenada de elementos únicos. Ele é ideal para remover duplicatas de uma sequência e para testar pertinência de forma muito rápida (tempo constante O(1) em média).
Diferente de listas e tuplas, conjuntos não mantêm a ordem dos elementos e não permitem indexação (ex.: s[0]). Em troca, oferecem operações matemáticas de união, interseção, diferença e diferença simétrica, tornando o código mais expressivo e eficiente.
Existem duas versões: set, que é mutável, e frozenset, que é imutável e, por isso, pode ser usado como chave de dicionário ou elemento de outro conjunto. Ambos são criados com chaves {} (apenas para set) ou com a função set() / frozenset().
Neste card você vai aprender a criar conjuntos, remover duplicatas, fazer operações de união e interseção, e entender por que a pertinência é O(1).
Pontos-chave
seté mutável;frozenseté imutável e pode ser usado como chave de dicionário.- Conjuntos removem duplicatas automaticamente:
set([1, 2, 2, 3])resulta em{1, 2, 3}. - Operadores
|(união) e&(interseção) combinam conjuntos de forma matemática. - Testar pertinência com
inem umseté O(1) em média, muito mais rápido que em listas. - Conjuntos não mantêm ordem e não suportam indexação ou fatiamento.
# conjuntos_basico.py
# Demonstração de set, frozenset, união, interseção, remoção de duplicatas e pertinência O(1)
# Removendo duplicatas de uma lista
notas = [10, 8, 9, 10, 8, 7]
notas_unicas = set(notas)
print("Notas únicas:", notas_unicas) # ordem não é garantida
# Criando conjuntos diretamente
pares = {2, 4, 6, 8}
multiplos_de_3 = {3, 6, 9}
# União e interseção
uniao = pares | multiplos_de_3
intersecao = pares & multiplos_de_3
print("União:", uniao)
print("Interseção:", intersecao)
# Pertinência O(1)
print("6 está em pares?", 6 in pares)
print("5 está em pares?", 5 in pares)
# frozenset é imutável e pode ser chave de dicionário
config = frozenset(["host", "porta"])
print("frozenset:", config)
# Diferença e diferença simétrica
print("Pares - múltiplos de 3:", pares - multiplos_de_3)
print("Diferença simétrica:", pares ^ multiplos_de_3)
# Adicionando e removendo em set
pares.add(10)
pares.discard(2) # discard não gera erro se o elemento não existir
print("Pares após alterações:", pares)