Comprendre et appliquer Python map

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’application 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’utilisation de map est avant tout utile si vous voulez appliquer la seule et même fonction à chacun de ces éléments. Vous pouvez ensuite simplement 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 paramè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 correspond précisé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 comportement 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 « incrémenter », qui accepte un nombre et exécute précisé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 « incrémenter » 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 à travailler 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 constaterez que tous les éléments de la liste « nombres » transmis à map ont été incrémentés de 1. Le résultat suivant apparaitrait 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 automatiquement 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 transmettre la fonction à la fonction map sous la forme d’une expression lambda. Une expression 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 « incrémenter » par une expression lambda appropriée et ainsi raccourcir le code :

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

Le comportement du code ne change pas du tout en principe. Seule la fonction « incrémenter » a été remplacée par une expression lambda. Elle est introduite 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’expression lambda après le deux-points. Comme vous pouvez le voir, cette variante du code est beaucoup plus courte grâce à l’expression 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’application 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 expression lambda. Celle-ci accepte maintenant deux paramètres x et y et renvoie le résultat de leur addition. Nous passons deux listes à Python map en paramètre supplémentaire et convertissons 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é additionnés à certains endroits.