Responda conforme a questão:
Explique como funcionam os comandos map e reduce em python e javascript. (4 escores)
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:
– Uso típico:
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:
– Uso típico:
– 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:
– Sintaxe:
–
– Exemplo de soma:
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:
–
– Exemplo de soma:
– 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 emfunctools
; em JS está nativo emArray.prototype
.- Em ambas é possível fornecer um valor inicial (
inicial
ouinitialValue
); 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).
– 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).