Python a des fonctions map() et reduce() intégrées.
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 un itérable. La carte applique tour à tour la fonction passée à chaque élément de la séquence et renvoie le résultat sous la forme d'un nouvel itérateur.
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 ...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])>>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]
map() Le premier paramètre transmis est f, qui est l'objet fonction lui-même. Puisque le résultat r est un Iterator, et Iterator est une séquence paresseuse, nous utilisons la fonction list() pour la laisser calculer la séquence entière. Et renvoie une liste.
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)
C'est en effet possible , mais, d'après ce qui précède, pouvez-vous comprendre en un coup d'œil "appliquer f(x) à chaque élément de la liste et générer une nouvelle liste en conséquence" du code de boucle ?
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 en calculer n'importe quel. Des fonctions complexes, par exemple, convertissent tous les nombres de cette liste en chaînes :
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
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!