Python - Mapper, filtrer, réduire
CARTE
Tout d'abord, comprenons pourquoi nous avons exactement besoin d'une fonction de carte et comment cela nous aide à réduire notre travail et à rendre notre code plus efficace.
Supposons que nous ayons une liste sur laquelle travailler comme ci-dessous, mais le problème avec la liste est que tous les éléments qui y sont présents sont au format chaîne, donc si nous essayons d'effectuer des opérations numériques, cela ne donnera aucun résultat.
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
Maintenant, une façon de contourner cela est une boucle for, jetons un coup d'œil
for i in range(len(l1)):
l1[i] = int(l1[i])
x = l1[0]+1
print(x)
4
Nous prendrons une autre liste appelée l2 et effectuerons à nouveau la même opération.
l2 = ["3","5","9","12","25"]
l2 = list(map(int,l2))
y = l2[0]+1
print(y)
4
Voyons maintenant quelques autres exemples également, supposons que nous voulions connaître les valeurs au carré d'une liste entière, voyons comment nous pouvons le faire à l'aide de la fonction map.
Commençons par écrire une fonction 'sq' qui renverra la valeur au carré d'un nombre donné
def sq(a):
return a*a
l3 = [3,5,7,2,9]
l4 = list(map(sq,l3))
print(l4)
[9, 25, 49, 4, 81]
Examinons maintenant quelque chose de plus compliqué, ce que nous essayons de réaliser maintenant est d'obtenir le carré et le cube des nombres de 0,8, stockés dans une liste. Nous allons utiliser la fonction map, la fonction lambda, ainsi que notre mot-clé def pour décrire maintenant les fonctions carré et cube. Ensuite, nous utiliserons une boucle for pour créer la liste.
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]
Comme son nom l'indique, la fonction filter nous aide à filtrer un ensemble donné d'itérables , en tant qu'argument, elle prend la fonction indiquée sur la base de laquelle nous allons filtrer nos itérables, puis elle prend les itérables eux-mêmes comme arguments. Ci-dessous, 3 types de filtres sont donnés, un filtrera les nombres supérieurs à 10 de la liste, un filtrera les nombres inférieurs à 10 et un aura plusieurs conditionnements indiquant que le nombre doit être supérieur à 10 mais inférieur à 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]
Comprenons ce que fait la fonction reduce et quel problème elle résout, pour comprendre cela, prenons d'abord un énoncé de problème et notre solution traditionnelle pour le résoudre.
Disons qu'il y a une liste et que nous voulons obtenir la somme de tous les entiers présents dans la liste
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
Pour plus de contenu de ce type, veuillez suivre mon profil Medium et ma page LinkedIn —https://www.linkedin.com/in/chandan-sengupta/
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































