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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Deduplicar: o truque de tirar repetidos.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
Jogar tudo no conjunto. Para tirar repetidos de uma lista, jogue os itens num conjunto.
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.
Fechando o módulo dos conjuntos. Com o conjunto na bagagem, você completa o trio de estruturas de coleção do intermediário.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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 unicidadeConverter a lista em conjunto descarta os repetidos de uma vez. De 5 e-mails com duplicatas sobram 3 únicos.
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 originalPara 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.