Módulo 7 - Conjuntos: tem ou não tem, sem repetir

Deduplicar: o truque de tirar repetidos

7 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Remover duplicados de uma lista usando um conjunto.
  • Entender por que a unicidade do conjunto faz a deduplicação sozinha.
  • Perceber que converter para conjunto perde a ordem original.
  • Recuperar uma lista sem repetidos quando a ordem importa.

Jogar tudo no conjunto

Aqui está talvez o truque mais usado do dia a dia com conjuntos, e um dos mais satisfatórios. Você tem uma lista cheia de repetidos, uma exportação de e-mails com duplicatas, uma coleção de tags em que várias se repetem, uma sequência de números com sobras, e quer só os valores distintos. A solução é quase mágica: jogue todos os itens num conjunto. Como o conjunto ignora repetidos pela sua unicidade, o que sobra são exatamente os valores únicos, sem você precisar comparar nada na mão. O que seria um laço com teste de pertencimento a cada passo vira uma conversão direta. É o tipo de solução curta e elegante que faz a estrutura certa parecer um superpoder.

emails <- ["ana@x.com", "beto@x.com", "ana@x.com", "caio@x.com", "beto@x.com"]
unicos <- conjunto(emails)
escreva(tamanho(unicos))   // 3 (ana, beto, caio, cada um uma vez)
// as duplicatas de ana e beto foram descartadas pela unicidade

Converter a lista em conjunto descarta os repetidos de uma vez. De 5 e-mails com duplicatas sobram 3 únicos.

À esquerda, uma lista com os itens ana, beto, ana, caio, beto, com as repetições em cinza. Uma seta larga aponta para a direita, para um círculo de conjunto contendo apenas ana, beto e caio, uma vez cada. As cópias repetidas caem fora no caminho, ilustrando a remoção automática.
A lista com repetidos entra no conjunto; a unicidade deixa só os valores distintos do outro lado.

O preço do truque: a ordem se perde

O truque é ótimo, mas tem um preço que você precisa conhecer para não ser pego de surpresa. Como o conjunto não guarda ordem, converter uma lista em conjunto embaralha a sequência original. Se você tinha os e-mails em ordem de cadastro e só queria remover os repetidos mantendo essa ordem, a conversão pura não serve: os únicos saem, mas fora da ordem que você tinha. Para muitos casos isso não importa (você só quer a contagem de distintos, ou vai reordenar de qualquer jeito), e aí o truque é perfeito. Mas quando a ordem precisa ser preservada, a solução é outra: percorrer a lista original mantendo um conjunto de já vistos e montar uma lista nova só com os itens que aparecem pela primeira vez.

lista <- ["b", "a", "b", "c", "a"]
vistos <- conjunto vazio
sem_repetir <- lista vazia
para cada item em lista faça
  se item não pertence a vistos então
    adicione(item, sem_repetir)   // mantém a ordem de primeira aparição
    adicione(item, vistos)
  fim
fim
escreva(sem_repetir)   // [ "b", "a", "c" ] - sem repetidos E na ordem original

Para deduplicar preservando a ordem, use um conjunto de vistos e monte uma lista nova na ordem de primeira aparição.

🎮 Jogo da aula

Quantos sobram?

A lista abaixo é convertida em conjunto para remover repetidos. Escolha o tamanho do conjunto resultante.

valores <- [4, 7, 4, 4, 9, 7, 2]
unicos <- conjunto(valores)
escreva(tamanho(unicos))

Fechando o módulo dos conjuntos

Com o conjunto na bagagem, você completa o trio de estruturas de coleção do intermediário. A lista guarda ordem e permite repetição; o dicionário associa etiquetas a valores; o conjunto guarda itens únicos e responde pertence com rapidez. Cada uma resolve uma família de problemas, e a habilidade que você está construindo é olhar para um problema e sentir qual estrutura pede menos esforço. Uma coleção sem repetidos, com muita checagem de presença ou combinação de grupos, grita conjunto. Daqui em diante, o curso muda de foco: sai de como guardar os dados e entra em como organizar o código que trabalha com eles, começando pelas funções, as máquinas que empacotam pedaços de lógica para reusar.

Teste rápido

Você converte uma lista de e-mails em ordem de cadastro para um conjunto, para remover duplicados. Qual é o efeito colateral a considerar?

Perguntas frequentes

Como removo duplicados de uma lista rapidinho?
Jogando a lista num conjunto: a unicidade descarta os repetidos sozinha, e você fica só com os valores distintos. É a forma mais curta de deduplicar. O único cuidado é que a ordem original se perde, porque o conjunto não guarda ordem.
E se eu quiser remover duplicados mantendo a ordem?
Aí você percorre a lista original guardando um conjunto de já vistos e monta uma lista nova, adicionando cada item só na primeira vez que aparece. Assim os repetidos ficam de fora e a ordem de primeira aparição é preservada. O conjunto de vistos faz a checagem rápida a cada passo.
Por que a ordem se perde ao converter para conjunto?
Porque o conjunto, por definição, não guarda ordem: ele só sabe quem pertence, não em que sequência. Ao jogar a lista nele, os itens únicos permanecem, mas a informação de ordem é descartada. Isso é uma característica, não um bug; quando a ordem importa, usa-se a técnica do conjunto de vistos.
Deduplicar com conjunto é mais rápido que comparar tudo?
Bem mais. Comparar cada item com todos os anteriores para achar repetidos é lento (o custo cresce ao quadrado). O conjunto usa o teste de pertencimento rápido a cada passo, o que deixa a deduplicação eficiente mesmo em listas grandes. É a estrutura certa transformando um problema caro num barato.
Posso deduplicar e depois ordenar?
Pode, e é comum quando você quer os valores únicos numa ordem específica. Você joga tudo num conjunto para remover repetidos, transforma o resultado de volta em lista e a ordena. Como a ordem seria refeita de qualquer forma, a perda de ordem do conjunto não atrapalha nesse caso.
O que aprendi neste módulo se conecta com o resto do curso?
Muito. O teste de pertencimento rápido reaparece no módulo de busca; a ideia de custo que cresce ou não com o tamanho é o tema de eficiência; e conjuntos, listas e dicionários juntos aparecem no projeto final. Escolher a estrutura certa é uma habilidade que o curso inteiro vai exercitar.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.