Python — Mapear, Filtrar, Reduzir
MAPA
Primeiro, vamos entender por que exatamente precisamos de uma função map e como ela nos ajuda a reduzir nosso trabalho e tornar nosso código mais eficiente.
Suponha que temos uma lista para trabalhar conforme abaixo, mas o problema com a lista é que todos os elementos presentes nela estão no formato string, portanto, se tentarmos realizar qualquer operação numérica, ela não produzirá nenhum resultado.
l1 = ["3","5","9","12","25"]
x = l1[0]+1
print(x)
----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
Input In [1], in <cell line: 2>()
1 l1 = ["3","5","9","12","25"]
----> 2 x = l1[0]+1
3 print(x)
TypeError: can only concatenate str (not "int") to str
Agora, uma maneira de contornar isso é um loop for, vamos dar uma olhada
for i in range(len(l1)):
l1[i] = int(l1[i])
x = l1[0]+1
print(x)
4
Pegaremos outra lista chamada l2 e faremos a mesma operação novamente.
l2 = ["3","5","9","12","25"]
l2 = list(map(int,l2))
y = l2[0]+1
print(y)
4
Agora vamos dar uma olhada em alguns outros exemplos também, suponha que queremos descobrir os valores quadrados de uma lista inteira, vamos ver como podemos fazer isso com a ajuda da função map.
Primeiro, vamos escrever uma função 'sq' que retornará o valor ao quadrado de um determinado número
def sq(a):
return a*a
l3 = [3,5,7,2,9]
l4 = list(map(sq,l3))
print(l4)
[9, 25, 49, 4, 81]
Agora vamos ver algo mais complicado, o que estamos tentando conseguir agora é obter o quadrado e o cubo dos números de 0,8, armazenados em uma lista. Usaremos a função map, a função lambda e também nossa palavra-chave def para descrever as funções quadrado e cubo agora. Em seguida, usaremos um loop for para criar a lista.
def sq(a):
return a*a
def cube(a):
return a*a*a
func = [sq,cube]
for i in range(8):
rslt = list(map(lambda x:x(i) ,func))
print(rslt)
[0, 0]
[1, 1]
[4, 8]
[9, 27]
[16, 64]
[25, 125]
[36, 216]
[49, 343]
Como o nome sugere, a função de filtro nos ajuda a filtrar um determinado conjunto de iteráveis , como argumento, ela pega a função declarada com base na qual estaremos filtrando nossos iteráveis e, em seguida, leva os próprios iteráveis como argumentos. Abaixo, são fornecidos 3 tipos de filtros, um filtrará números maiores que 10 da lista, um filtrará números menores que 10 e um terá condicionamento múltiplo que afirma que o número deve ser maior que 10, mas menor que 15.
l1 = [34,12,5,8,11,14,19,10,1,50]
def grt_condi(num):
return num>10
def lsr_condi(num):
return num<10
def multi_condi(num):
return num>10 and num<15
l2 = list(filter(grt_condi,l1))
l3 = list(filter(lsr_condi,l1))
l4 = list(filter(multi_condi,l1))
print(l2)
print(l3)
print(l4)
[34, 12, 11, 14, 19, 50]
[5, 8, 1]
[12, 11, 14]
Vamos entender o que a função de redução faz e qual problema ela resolve. Para entender isso, vamos primeiro fazer uma declaração do problema e nosso passo a passo tradicional para resolvê-lo.
Digamos que existe uma lista e queremos obter a soma de todos os números inteiros presentes na lista
l6 = [2,3,6,5,8,9,10]
x = 0
for i in l6:
x = x+i
print(x)
43
from functools import reduce
l7 = reduce(lambda x,y:x+y , l6)
print(l7)
43
Para mais conteúdo desse tipo, siga meu perfil do Medium e a página do LinkedIn -https://www.linkedin.com/in/chandan-sengupta/





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)