Entendendo map, filter, reduce e lambda

- 2 mins

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:

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 <3


Beatriz Uezu

Beatriz Uezu

Software Engineer

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora