Entendendo map, filter, reduce e lambda

Beatriz Uezu
3 min readDec 19, 2019

--

Antes de falar sobre map, filter e reduce, precisamos entender sobre função de ordem superior.

Função de ordem superior

Função de ordem superior é uma função que:

  • recebe uma função como argumento;
  • ou devolve uma função como resultado.

Map, filter e reduce são as funções de ordem superior mais conhecidas.

Map

A função map recebe uma função (dobrar_numero) e um iterável (range(4)), cada item desse iterável (números de 0 à 3) é aplicada na função, o que faz o map retornar um objeto map e convertemos esse resultado em uma lista.

Filter

A função filter recebe uma função (maior_que_zero) e um iterável (valores), cada item do iterável é aplicada a condição da função que faz o “filtro”, retornando também um objeto filter e convertemos o resultado em uma lista

Reduce

A ideia de usar o reduce é aplicar uma função (somar) a cada item de um iterável (range(5), ou seja, números de 0 à 4) a fim de ser “reduzida” a um único valor.

É possível passar um terceiro parâmetro opcional para inicializar o valor da função:

Lambda

Função lambda também é conhecida como função anônima, e é comum vermos a função lambda ser usada junto com map, filter ou reduce afim de encurtar as funções criadas pelo comando def

Map e lambda

Filter e lambda

Reduce e lambda

Deixando map, filter e reduce mais legíveis

Para tornar o código mais legível é possível substituir as funções map e filter por list comprehension e a função reduce por sum(), all() e any().

Como já diz no Zen of Python

Readability counts

List Comprehension

map vs list comprehension

código usando map
código substituindo map por list comprehension

filter vs list comprehension

código usando filter
código substituindo filter por list comprehension

reduce vs sum, all, any

código usando filter
código substituindo reduce por sum

A função all() recebe um iterável e se todos os elementos forem verdadeiros a função retorna True

exemplo de código utilizando a função all

A função any() recebe um iterável e se algum elemento for verdadeiro a função retorna True

exemplo de código utilizando a função any

Espero que esse post tenha ficado simples e que você tenha entendido sobre map, filter, reduce e lambda!

Obrigada por ter lido ❤

--

--