Aula 19: Conjuntos (Sets)

Coleções de itens únicos e não ordenados.

O Que Você Vai Aprender

Nesta aula de 2 horas, você será introduzido aos conjuntos (Sets), uma estrutura de dados fundamental em Python que se destaca por armazenar apenas itens únicos e não ter uma ordem definida. Aprenderá a criar e manipular conjuntos, além de realizar poderosas operações matemáticas como união, interseção e diferença, essenciais para lidar com coleções de dados de forma eficiente.

✅ Compreender Conjuntos

Entender o conceito de conjuntos: coleções de itens únicos e não ordenados.

🛠️ Criar e Manipular Conjuntos

Aprender a sintaxe para criar conjuntos e os métodos para adicionar e remover itens.

➕ Operações Matemáticas de Conjuntos

Realizar operações como união, interseção e diferença para combinar ou comparar conjuntos.

Conceito e Criação de Conjuntos (Sets)

Conjuntos são coleções de itens que possuem duas características principais: eles contêm apenas itens únicos (duplicatas são automaticamente removidas) e são não ordenados (a ordem dos itens não é garantida). Eles são extremamente úteis para remover duplicatas e para realizar testes de pertinência de forma muito eficiente.

Criação de Conjuntos

Use chaves `{}` para criar conjuntos diretamente. Itens são separados por vírgulas. Duplicatas são ignoradas.

meu_set = {1, 2, 3, 3, 4}
# meu_set será {1, 2, 3, 4} (o 3 repetido e o 4 repetido são ignorados)

Você também pode criar um conjunto a partir de uma lista (ou outro iterável):

numeros_unicos = set([1, 2, 2, 3, 4, 4, 4])
# numeros_unicos será {1, 2, 3, 4}

Atenção: Criando um Conjunto Vazio

Para criar um conjunto vazio, NÃO use `{}`, pois isso cria um dicionário vazio. Use `set()`:

vazio = set()  # Isso cria um conjunto vazio
# not_a_set = {} # Isso cria um dicionário vazio!

Criador de Conjuntos

Digite itens separados por vírgulas. Veja como as duplicatas são removidas e a ordem não é mantida.

Manipulação de Conjuntos: Adicionar e Remover Itens

Embora conjuntos não sejam ordenados, você pode adicionar e remover itens dinamicamente. Os métodos `add()`, `remove()` e `discard()` são essenciais para isso.

Adicionar um Item (`.add(item)`)

Adiciona um único item ao conjunto. Se o item já existir, o conjunto permanece inalterado (pois itens são únicos).

meu_set = {1, 2}
meu_set.add(3)
# meu_set é {1, 2, 3}
meu_set.add(2) # Não faz nada
# meu_set continua sendo {1, 2, 3}

Remover um Item (`.remove(item)` vs `.discard(item)`)

Existem duas formas principais de remover itens:

  • `.remove(item)`: Remove o item especificado. Se o item não existir, gera um `KeyError`.
  • `.discard(item)`: Remove o item especificado. Se o item não existir, não faz nada e não gera erro. É mais seguro!
cores = {'vermelho', 'azul', 'verde'}
cores.remove('azul')
# cores é {'vermelho', 'verde'}
# cores.remove('amarelo') # Isso geraria um KeyError!

cores.discard('verde')
# cores é {'vermelho'}
cores.discard('roxo') # Não faz nada, não gera erro

Manipulador de Conjuntos

Comece com um conjunto inicial e use os botões para adicionar ou remover itens. Conjunto atual: {'maçã', 'banana', 'laranja'}

Operações de Conjuntos: Lógica Matemática Aplicada

Conjuntos suportam operações matemáticas poderosas que permitem combinar, comparar e filtrar dados entre diferentes coleções. São ideais para encontrar elementos comuns, exclusivos ou totais entre grupos de itens.

União (`|` ou `.union()`)

Combina todos os itens únicos de ambos os conjuntos. O operador `|` é o mais comum.

set1 = {1, 2}
set2 = {2, 3}
uniao = set1 | set2 # Saída: {1, 2, 3}

Interseção (`&` ou `.intersection()`)

Retorna apenas os itens que existem em ambos os conjuntos.

set1 = {1, 2, 3}
set2 = {2, 3, 4}
intersecao = set1 & set2 # Saída: {2, 3}

Diferença (`-` ou `.difference()`)

Retorna os itens que estão no primeiro conjunto, mas não no segundo.

set1 = {1, 2, 3}
set2 = {2, 4}
diferenca = set1 - set2 # Saída: {1, 3}

Simulador: Operações de Conjuntos

Defina dois conjuntos e selecione uma operação para ver o resultado.

Desafios para Continuar

Agora que você explorou o poder dos conjuntos, é hora de praticar! Resolva estes problemas no seu ambiente de desenvolvimento Python para solidificar seu aprendizado.

  • Removendo Duplicatas de uma Lista

    Dada a lista `numeros = [1, 5, 2, 8, 2, 5, 9, 10, 1]`, use um conjunto para criar e imprimir uma nova lista sem elementos duplicados. (Dica: converta a lista para conjunto e depois o conjunto de volta para lista).

  • Análise de Convidados de Festas

    Crie duas listas de convidados para duas festas diferentes, com alguns nomes que se repetem (ex: `festa_a = ["João", "Maria", "Pedro"]`, `festa_b = ["Pedro", "Ana", "João"]`). Use conjuntos para descobrir e imprimir:

    • **a) Todas as pessoas convidadas no total (sem repetição):** use a operação de união.
    • **b) Quem foi convidado para ambas as festas:** use a operação de interseção.