Questão de Programação — Linguagens de programação — Quadrix 2025
- Código
- qg594764
- Banca
- Quadrix
- Órgão
- CFBio
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Sistemas
- CCerto
- EErrado
GabaritoE — Errado
map e a falsa ideia de permutaçõesGabarito: E — ERRADO. A afirmação está incorreta porque o comando map(lambda x, y: x * y, [1, 2, 3], [4, 5]) não gera permutações, mas sim o produto elemento a elemento das duas listas, combinando o primeiro com o primeiro, o segundo com o segundo, e assim por diante. Como as listas têm tamanhos diferentes (3 e 2), o map para no fim da lista mais curta, retornando apenas [4, 10] — sem qualquer erro e sem qualquer permutação.
A função map é uma ferramenta clássica da programação funcional em Python. Ela aplica uma função a cada item de um ou mais iteráveis, de forma paralela. Quando recebe múltiplos iteráveis, o map consome um elemento de cada um por vez, até que o menor deles se esgote. No exemplo, a função lambda x, y: x * y recebe x da primeira lista e y da segunda: na primeira iteração, 1 * 4 = 4; na segunda, 2 * 5 = 10. Como a segunda lista só tem dois elementos, o processo para aí — o 3 da primeira lista é ignorado. O resultado é um objeto map, que pode ser convertido em lista: [4, 10].
O conceito de permutação é totalmente diferente: permutar significa rearranjar os elementos de um conjunto, gerando todas as ordens possíveis. Para gerar permutações em Python, usa-se itertools.permutations, não map. Por exemplo, list(itertools.permutations([1, 2, 3])) geraria todas as 6 ordenações possíveis de três elementos. A banca, ao afirmar que o map gera "todas as permutações possíveis", mistura dois conceitos distintos da programação funcional: a aplicação paralela (map) e a geração de arranjos (permutations).
Outro ponto que merece atenção: o enunciado diz que o comando gera as permutações "sem erros". De fato, o código não lança exceção — ele simplesmente ignora o elemento excedente da lista maior. Isso é um comportamento padrão do map em Python, que não valida se os iteráveis têm o mesmo tamanho. Portanto, a execução é silenciosa e bem-sucedida, mas o resultado não tem nada a ver com permutações.
A banca explora a confusão entre map (aplicação paralela elemento a elemento) e itertools.permutations (geração de todas as ordenações). O candidato que sabe que map combina listas pode até acertar que o resultado é [4, 10], mas a afirmação de que isso gera "permutações" é o erro central. Fique atento: map nunca gera permutações — ele apenas aplica uma função aos elementos correspondentes dos iteráveis fornecidos.
A afirmação está incorreta por dois motivos: (1) o map não gera permutações, e sim o produto elemento a elemento; (2) o resultado seria [4, 10], não uma lista de permutações. O código, embora válido e sem erros de execução, não faz o que o enunciado descreve. Para gerar permutações, seria necessário usar itertools.permutations, como em list(itertools.permutations([1, 2, 3])). A banca troca o conceito de aplicação paralela de função pelo de rearranjo de elementos — uma armadilha clássica para quem decora a sintaxe sem entender a semântica.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg594764