Responda conforme a questão:
Explique como funcionam os comandos map e reduce em python e javascript. (4 escores)

Passo 1

O enunciado pede que expliquemos os comandos de programação funcional map e reduce em Python e em JavaScript. O conteúdo envolve funções de ordem superior que aplicam uma transformação (map) ou agregam valores (reduce) sobre coleções (listas em Python, arrays em JavaScript). Para resolver, vamos detalhar sintaxe, comportamento e dar exemplos simples em cada linguagem.

Passo 2

Map aplica uma função a cada elemento da coleção e retorna uma nova coleção com o mesmo tamanho.
Em Python:
– Sintaxe: map(func, iterável) retorna um objeto do tipo map.
– Uso típico:
def dobro(x):
 return x * 2

lista = [1, 2, 3]
resultado = list(map(dobro, lista)) # [2, 4, 6]
Em JavaScript:
– Sintaxe: arr.map(callback[, thisArg]) retorna um novo array.
– Uso típico:
const nums = [1, 2, 3];
const dobro = nums.map(x => x * 2); // [2, 4, 6]

Passo 3

Reduce combina os elementos da coleção usando uma função acumuladora, produzindo um único valor.
Em Python:
– É preciso importar: from functools import reduce
– Sintaxe: reduce(func, iterável[, inicial])
func recebe dois argumentos (acumulador, item) e retorna o novo acumulador.
– Exemplo de soma:
from functools import reduce

nums = [1, 2, 3, 4]
soma = reduce(lambda acc, x: acc + x, nums, 0) # 10
Em JavaScript:
– Sintaxe: arr.reduce(callback[, initialValue])
callback recebe quatro parâmetros (acumulador, valorAtual, índice, array).
– Exemplo de soma:
const nums = [1, 2, 3, 4];
const soma = nums.reduce((acc, x) => acc + x, 0); // 10

Passo 4

Principais diferenças e observações:
  • Em Python, map retorna um iterador preguiçoso; para ver o resultado, convertemos em lista. Em JS, map já retorna um array.
  • reduce em Python fica em functools; em JS está nativo em Array.prototype.
  • Em ambas é possível fornecer um valor inicial (inicial ou initialValue); se não, o primeiro elemento serve como acumulador inicial (mas isso varia e pode lançar erro em lista vazia).
  • A ordem dos parâmetros da função de callback é sempre (acumulador, elemento) nos dois casos.

Resposta

Map e reduce são funções de ordem superior usadas para transformar e agregar coleções.
Map: aplica uma função a cada item e devolve nova coleção (em Python um iterador convertido em lista; em JavaScript um array).
Reduce: aplica uma função acumuladora sobre os itens, retornando um único resultado (é necessário cuidar do valor inicial).

Exercícios relacionados