Implemente em Python uma função que recebe uma lista de inteiros e retorna, na ordem da primeira ocorrência…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Implemente em Python uma função que recebe uma lista de inteiros e retorna, na ordem da primeira ocorrência, os elementos que aparecem mais de uma vez, sem duplicatas.
- A) def repetidos(lst): return list(set(lst))
- B) def repetidos(lst): return list(dict.fromkeys(lst))
- C) def repetidos(lst): return [x for x in lst if lst.count(x) == 1]
- D) def repetidos(lst): return list(dict.fromkeys([x for x in lst if lst.count(x)>1]))
- E) def repetidos(lst): return lst[::-1]
✅ Resposta correta: alternativa D
Resolução passo a passo
- Queremos apenas os elementos que aparecem mais de uma vez (count maior que 1), sem repetições e na ordem da primeira ocorrência. Passo 2: A alternativa D faz isso em duas etapas. Primeiro, a list comprehension [x for x in lst if lst.count(x) > 1] mantém as ocorrências de valores repetidos, na ordem original. Passo 3: Depois, dict.fromkeys(...) cria um dicionário cujas chaves entram na ordem da primeira aparição e não aceitam duplicatas; list(...) converte essas chaves em lista. Assim o resultado não tem repetições e preserva a ordem. Exemplo: para [3, 1, 3, 2, 1, 5], a primeira etapa gera [3, 1, 3, 1] e a segunda gera [3, 1]. Passo 4: Por que as outras estão erradas: A usa set, que perde a ordem e inclui elementos que aparecem uma única vez. B remove duplicatas, mas não filtra, então mantém elementos únicos como o 2 e o 5. C seleciona exatamente os elementos que aparecem uma só vez, o oposto do pedido. E apenas inverte a lista, sem filtrar nada. Portanto, o gabarito D está correto.
💡 Dica: Utilize um dicionário para contar as ocorrências dos elementos.
Alternativa por alternativa
Acredita que usar set resolve o problema, confundindo remover duplicatas com selecionar apenas os elementos que se repetem. Também não percebe que set não preserva a ordem da primeira ocorrência.
Interpreta 'sem duplicatas' como o único critério da função e esquece que é preciso retornar apenas os elementos que aparecem mais de uma vez. Assim, mantém também os elementos que aparecem uma só vez.
Inverte a condição de filtragem e seleciona os elementos cuja contagem é exatamente 1, quando o pedido era o contrário. Também retornaria duplicatas caso um valor aparecesse várias vezes.
Por que engana: O aluno pode confundir a contagem de elementos e acabar retornando elementos únicos em vez dos repetidos.
A compreensão filtra elementos com contagem>1; dict.fromkeys preserva a primeira ocorrência e remove duplicatas; list converte para lista.
Não compreende o enunciado e supõe que basta inverter a lista para obter os repetidos. A operação de fatiamento lst[::-1] não filtra nem remove elementos.
Raio-X da questão
funções em Python
fixacao
listas em Python · contagem de elementos
Revisar como manipular listas e dicionários em Python.
O aluno pode confundir a contagem de elementos e acabar retornando elementos únicos em vez dos repetidos.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Em um projeto de monitoramento de rios, uma boia computacional organiza leituras de sensores antes de enviá-las por…
- Uma biblioteca escolar recebeu caixas de livros doados para uma feira de troca. Para registrar os exemplares, a equipe…
- Um centro cultural público oferece inscrições on-line para atividades com critérios variados. Na oficina de teatro…
- Uma escola está testando dois protótipos de aplicativo para que estudantes consultem mudanças de sala, horários e…
- Uma secretaria municipal de educação está digitalizando pedidos de transporte escolar e de atendimento em contraturno…
- — O cartaz não pode sair duas vezes, pois a feira começa em uma hora — alertou a coordenadora do centro cultural. No…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
