Sitemap

Entendendo map, filter, reduce e lambda

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

Press enter or click to view image in full size

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

Press enter or click to view image in full size

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

Press enter or click to view image in full size

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:

Press enter or click to view image in full size

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

Press enter or click to view image in full size

Filter e lambda

Press enter or click to view image in full size

Reduce e lambda

Press enter or click to view image in full size

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

Press enter or click to view image in full size
código usando map
Press enter or click to view image in full size
código substituindo map por list comprehension

filter vs list comprehension

Press enter or click to view image in full size
código usando filter
Press enter or click to view image in full size
código substituindo filter por list comprehension

reduce vs sum, all, any

Press enter or click to view image in full size
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

Press enter or click to view image in full size
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

Press enter or click to view image in full size
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 ❤

--

--

No responses yet