La fonction map intégrée à Python est utilisée pour appliquer une fonction à tous les éléments de ce que l’on appelle un « itérable ».

Champs d’ap­pli­ca­tion de Python map

La fonction Python map est un moyen élégant de traiter les contenus des itérables. Les itérables sont des objets Python à travers lesquels vous pouvez itérer. Outre les listes Python, on y trouve aussi par exemple les tuples Python. La fonction map peut être utilisée en principe à la place d’une loop for Python, qui examine chaque élément de l’itérable. L’uti­li­sa­tion de map est avant tout utile si vous voulez appliquer la seule et même fonction à chacun de ces éléments. Vous pouvez ensuite sim­ple­ment les passer à la fonction en paramètre.

Syntaxe de la fonction Python map

La syntaxe de Python map est aisément abordable :

map(function, iterable)
python

Comme vous pouvez le voir dans cet exemple de code, la fonction accepte deux pa­ra­mètres. Le premier paramètre décrit la fonction devant être appliquée à chaque élément de votre itérable, et le second paramètre cor­res­pond pré­ci­sé­ment à cet itérable, sur lequel vous voulez effectuer une itération. La fonction renvoie un objet de la classe Python map, auquel la fonction que vous avez passée a été appliquée. Vous pouvez passer cette valeur de retour à des fonctions telles que Python list() ou set() pour manipuler les données.

Python map en pratique

On peut s’appuyer sur un exemple de code pour illustrer le com­por­te­ment de la fonction Python :

def incrémenter(n):
	return n + 1
nombres = (0, 1, 2, 3, 4)
résultat = map(incrémenter, nombres)
liste_résultat = list(résultat)
python

Dans cet extrait de code, une fonction est créée sous le nom « in­cré­men­ter », qui accepte un nombre et exécute pré­ci­sé­ment ce que son nom indique. Il s’ensuit la création d’une liste Python appelée « nombres », qui contient les nombres de 0 à 4 inclus. L’appel de map est le côté captivant : la fonction définie dans le code sous le nom « in­cré­men­ter » est passée en premier paramètre de transfert et la liste « nombres » est passée en deuxième paramètre de transfert. Le résultat est stocké dans la variable appelée « résultat ».

Pour vous permettre de continuer à tra­vail­ler avec le résultat, le résultat de la dernière ligne dans l’exemple de code est converti en liste. Par exemple, si vous consultez cette liste avec Python print, vous cons­ta­te­rez que tous les éléments de la liste « nombres » transmis à map ont été in­cré­men­tés de 1. Le résultat suivant ap­pa­rai­trait alors à l’écran : « (1, 2, 3, 4, 5) ».

Conseil

Python est un langage idéal pour réaliser des projets Web. Avec Deploy Now de IONOS, vous pouvez déployer vos projets Web via GitHub et les compiler au­to­ma­ti­que­ment de manière très aisée.

Python map avec des fonctions lambda

Si les fonctions que vous passez à Python map ne sont que des fonctions que vous voulez définir pour les éléments de votre itérable, il peut être utile de trans­mettre la fonction à la fonction map sous la forme d’une ex­pres­sion lambda. Une ex­pres­sion lambda Python est en principe un raccourci pour les fonctions que vous pouvez utiliser, si vous voulez les passer en paramètre de transfert. Comme les fonctions ainsi définies n’ont pas de nom propre et ne peuvent pas être appelées ailleurs dans le code, on les appelle également des fonctions anonymes.

Si l’on considère à nouveau l’exemple de code déjà expliqué pour utiliser Python map, on peut également remplacer la fonction « in­cré­men­ter » par une ex­pres­sion lambda ap­pro­priée et ainsi rac­cour­cir le code :

nombres = (0, 1, 2, 3, 4)
résultat = map(lambda n: n + 1, nombres)
liste_résultat = list(résultat)
python

Le com­por­te­ment du code ne change pas du tout en principe. Seule la fonction « in­cré­men­ter » a été remplacée par une ex­pres­sion lambda. Elle est in­tro­duite avec le mot-clé « lambda ». Elle est suivie d’un paramètre que vous écririez autrement dans l’en-tête de votre fonction. Vous pouvez spécifier le retour de l’ex­pres­sion lambda après le deux-points. Comme vous pouvez le voir, cette variante du code est beaucoup plus courte grâce à l’ex­pres­sion lambda.

Passer plusieurs itérables à Python map

Si vous voulez traiter deux itérables, vous pouvez également utiliser la fonction Python map à cet effet. Un exemple permet d’illustrer les modalités d’ap­pli­ca­tion de la fonction map à deux itérables :

a = (2, 3, 4)
b = (3, 4, 5)
résultat = map(lambda x, y: x + y, a, b)
liste_résultat = list(résultat)
python

Dans l’exemple ci-dessus, deux listes nommées « a » et « b » ont été créées, chacune contenant trois nombres. L’appel de map utilise à nouveau une fonction anonyme avec une ex­pres­sion lambda. Celle-ci accepte main­te­nant deux pa­ra­mètres x et y et renvoie le résultat de leur addition. Nous passons deux listes à Python map en paramètre sup­plé­men­taire et con­ver­tis­sons le résultat de l’appel de fonction à nouveau en liste. Le résultat est « (5, 7, 9) » car les nombres des deux listes ont été ad­di­tion­nés à certains endroits.

Aller au menu principal