Funções map(), reduce(), filter() e expressão lambda

Larissa Sales
3 min readAug 14, 2020

--

Python possui algumas funções e expressões built in que trazem para a linguagem alumas características da programação funcional.

Em ciência da computação, programação funcional é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa. Enfatizando as expressões ao invés de comandos, as expressões são utilizados para cálculo de valores com dados imutáveis.

O aspecto funcional da linguagem permite a escrita de códigos mais enxutos e eventualmente mais rápidos, porém,na linguagem Python, se usado em excesso pode deixar o código com difícil manutenção, portanto, be careful :).

Expressão Lambda

A expressão lambda nos permite criar funções anônimas usando apenas uma linha de código, podendo ser usada dentro de uma variável ou dentro de outras funções e o uso da palavra reservada return não é necessário.

Sintaxe:

lambda arg1, arg2, ..., argN : expression

Onde: arg1, arg2, argN são os argumentos/parâmetros e expression é a função que será executada usando esses parâmetros. Por exemplo:

soma = lambda x, y: x + y
print(soma(2,3))
# O resultado é:
5

A variável soma armazena uma expressão lambda que é responsável por realizar a operação soma de dois valores.

Função Map()

A função map() serve para aplicarmos uma determinada função a cada ítem de uma lista e ela retorna uma nova lista com os elementos resultantes da função aplicada.

Sintaxe:

map(function or None, sequence)

Onde: function é a função que será aplicada a cada ítem de um objeto iterável. None é a representação que estou usando para ilustrar que a função map pode não aplicar nenhuma função à lista, ela pode somente ler a lista e gerar uma nova com os valores lidos. E sequence é a sequência que a função usará como parâmetro.Por exemplo:

# Somando os elementos de 2 listas
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
print(list(map(lambda x, y: x+y, a, b)))
# O resultado é:
[6, 8, 10, 12]

Função reduce()

A função reduce(), apesar de ser built in, a partir da versão 3 do Python, foi movida para o pacote functools. Esta função é muito útil quando precisamos agregar todos os elementos de um conjunto em um único valor.

Sintaxe:

reduce(function, sequence)

Onde: function é a função que será aplicada aos elementos da sequência, até que reste apenas um. E sequence é a sequência que a função usará como parâmetro. Por exemplo:

# Importando a função reduce do pacote functools
from functools import reduce
# Criando uma lista
lst = [47, 11, 42, 13]
# Usando a função reduce() com lambda
print(reduce(lambda x, y: x+y, lst))
# Resultado:
113

Função Filter()

Como o próprio nome já diz, filter() filtra os elementos de uma sequência a partir da função que foi passada como argumento. A função filter() tem retorno booleano, portanto, quando aplicada à uma sequência, só retornará o que for True.

Sintaxe:

filter(function, sequence)

Onde: function é a função que será aplicada à sequência. E sequence é a sequência que a função usará como parâmetro. Por exemplo:

# Crio uma lista
lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

# Quero que a função retorne somente números pares
print(list(filter(lambda x: x % 2 == 0, lista)))
# Resultado:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Em todos os exemplos utilizei a expressão lambda para mostrar como ela facilita a vida.

Até mais :)

--

--