Da trilha de Python Este conceito ainda não saiu como card do dia. ir para o card de hoje

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 in em um set é 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
# 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)

Exercícios

  1. 1
    Fácil

    Removendo duplicatas

    Dada a lista numeros = [1, 2, 2, 3, 4, 4, 5], crie um conjunto com os valores únicos e imprima-o ordenado.

    Resolver
  2. 2
    Médio

    União e interseção de conjuntos

    Dados os conjuntos a = {1, 2, 3, 4} e b = {3, 4, 5, 6}, calcule e imprima a união, a interseção e a diferença a - b.

    Resolver
  3. 3
    Desafio

    Verificação de pertinência e frozenset

    Crie uma função contem_palavra(texto, palavra) que verifica se uma palavra está presente em um texto. Use um frozenset das palavras do texto para garantir pertinência O(1) e ignore maiúsculas/minúsculas. Depois, teste com um texto de exemplo.

    Resolver

Continue estudando