Entendendo map, filter, reduce e lambda
- 2 minsAntes 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
filter vs list comprehension
reduce vs sum, all, any
A função all()
recebe um iterável e se todos os elementos forem verdadeiros a função retorna True
A função any()
recebe um iterável e se algum elemento for verdadeiro a função retorna True
Espero que esse post tenha ficado simples e que você tenha entendido sobre map, filter, reduce e lambda!
Obrigada por ter lido <3