Cet article présente principalement l'utilisation de la fonction map() et de la fonction réduire() en Python. Le code est basé sur la version Python2.x. Les amis dans le besoin peuvent s'y référer
Python est intégré. Fonctions map() et réduire().
Si vous avez lu le célèbre article de Google "MapReduce: Simplified Data Processing on Large Clusters", vous pouvez à peu près comprendre le concept de map/reduce.
Regardons d’abord la carte. La fonction map() reçoit deux paramètres, l'un est une fonction et l'autre est une séquence. map applique tour à tour la fonction passée à chaque élément de la séquence et renvoie le résultat sous la forme d'une nouvelle liste.
Par exemple, par exemple, nous avons une fonction f(x)=x2, et nous voulons appliquer cette fonction à une liste [1, 2, 3, 4, 5, 6, 7, 8, 9]. Vous pouvez utiliser map() pour l'implémenter comme suit :
Maintenant, nous utilisons du code Python pour l'implémenter :
>>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]
Le premier paramètre transmis par map() est f, qui est l'objet fonction lui-même.
Vous pensez peut-être que vous n'avez pas besoin de la fonction map(), vous pouvez écrire une boucle et calculer le résultat :
L = [] for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]: L.append(f(n)) print L
En effet Oui, mais à partir du code de boucle ci-dessus, pouvez-vous comprendre d'un coup d'œil « appliquer f(x) à chaque élément de la liste et générer une nouvelle liste en conséquence » ?
Ainsi, map(), en tant que fonction d'ordre élevé, fait abstraction des règles de fonctionnement. Par conséquent, nous pouvons non seulement calculer f(x)=x2 simple, mais également calculer n'importe quelle fonction complexe, telle que, Convertissez tous les nombres de cette liste en chaînes :
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
Une seule ligne de code est nécessaire.
Regardez l'utilisation de réduire. réduire applique une fonction à une séquence [x1, x2, x3...]. Cette fonction doit recevoir deux paramètres. réduire continue le calcul cumulé du résultat avec l'élément suivant de la séquence. L'effet est :
< 🎜. >reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)Par exemple, pour additionner une séquence, vous pouvez utiliser réduire implémentation :>>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25
>>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 3, 5, 7, 9]) 13579
>>> def fn(x, y): ... return x * 10 + y ... >>> def char2num(s): ... return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] ... >>> reduce(fn, map(char2num, '13579')) 13579
def str2int(s): def fn(x, y): return x * 10 + y def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] return reduce(fn, map(char2num, s))
def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
def str2int(s): return reduce(lambda x,y: x*10+y, map(char2num, s))
Exercice
Utilisez la fonction map() pour changer le nom anglais non standard saisi par l'utilisateur en un nom standard avec la première lettre en majuscule et le reste en minuscule. Entrée : ['adam', 'LISA', 'barT'], sortie : ['Adam', 'Lisa', 'Bart']. La fonction sum() fournie par Python peut accepter une liste et calculer la somme. Veuillez écrire une fonction prod() qui peut accepter une liste et utiliser réduire() pour calculer le produit.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!