Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Développement Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Dans ce tutoriel, vous apprendrez à utiliser la fonction Python map() pour appliquer une fonction à tous les éléments d'une table itérative.

Python prend en charge le paradigme de programmation fonctionnelle qui vous permet de définir des tâches comme un calcul de fonctions de manière programmatique. Vous pouvez traiter les fonctions Python comme des objets : une fonction peut prendre une autre fonction en paramètre et renvoyer une autre fonction.

La fonction map() prend une fonction en argument et vous permet de l'appliquer à tous les éléments d'une séquence.

À la fin de ce tutoriel, vous serez en mesure d'utiliser la fonction map() de Python - pour réécrire des boucles verbeuses et des compréhensions de listes. Vous coderez plusieurs exemples pour comprendre les différentes façons d'utiliser la fonction map().

Comment appliquer une fonction aux éléments d'une liste Python ?

Appliquer une fonction aux éléments d'une liste Python

Commençons par un exemple.👩‍🏫

Ici, nums est une liste de nombres.

nums = [2,4,3,7]

Considérons ensuite la fonction self_pow(). La fonction self_pow() prend un nombre en argument et renvoie le nombre élevé à la puissance du nombre lui-même : n**n.

En Python, ** est l'opérateur d'exponentiation. a**b renvoie la valeur de a élevée à la puissance b,ab.

def self_pow(n) :
 return n**n

À FAIRE: Créer une nouvelle liste nums_pow en appliquant la fonction self_pow() à chaque élément de la liste nums.

Utilisation de la boucle pour

Pour ce faire, vous pouvez utiliser les boucles pour en Python :

  • Pour chaque nombre de la liste nums, appelez la fonction self_pow() avec num comme argument.
  • Ajoutez le résultat de l'appel de la fonction à la nouvelle liste nums_pow.
nums_pow = []

for num in nums :
 nums_pow.append(self_pow(num))

print(nums_pow)

Dans la sortie, chaque nombre nums est élevé à lui-même. Les éléments de la liste nums_pow sont les suivants :22,44,33,77.

Résultat
[4, 256, 27, 823543]

Utilisation de la compréhension des listes

Vous pouvez rendre ceci concis en utilisant la compréhension de liste. À partir de la boucle for explicite ci-dessus, nous pouvons identifier l'expression de sortie et la liste à parcourir.

python-map-fonction-motivation

Nous pouvons alors modifier l'expression générique de compréhension de liste :

new_list = [<expression de sortie> for item in iterable]

L'expression de compréhension de liste permettant de générer la liste nums_pow est la suivante :

nums_pow = [self_pow(num) for num in nums]
print(nums_pow)

La sortie est la même que celle obtenue en utilisant des boucles for, comme prévu.

Résultat
[4, 256, 27, 823543]

Au lieu de la compréhension des boucles et des listes, vous pouvez utiliser la fonction map() de Python avec une syntaxe concise qui permet d'appliquer la fonction à tous les éléments d'une table itérative. Commençons par apprendre la syntaxe de la fonction map.

Syntaxe de la fonction Python map()

Syntaxe de la fonction Python map()

La syntaxe générale pour utiliser la fonction Python map() est la suivante :

map(function, iterable_1,[iterable_2,...,iterable_n])

La fonction map() prend au moins deux arguments, une fonction et un itérable.

Dans la syntaxe ci-dessus :

  • fonction désigne une fonction Python ou, en général, tout appelable Python. Cela inclut les fonctions définies par l'utilisateur et les fonctions intégrées, les classes, les méthodes d'instance et de classe, etc.
  • itérable est tout itérable Python valide, tel qu'une liste, un tuple ou une chaîne de caractères.
  • La fonction map() applique la fonction à chaque élément de l'itérable

Que retourne la fonction map() ?

Elle renvoie un objet map. Vous pouvez ensuite transformer l'objet map en liste à l'aide de la syntaxe suivante : list(map(function,iterable)) .

Selon le cas d'utilisation, vous pouvez le transformer en tuple Python.

Que renvoie la fonction map()

Maintenant que vous avez appris la syntaxe de la fonction map() de Python, commençons à coder des exemples.

Vous devez disposer de Python 3.x pour suivre ce tutoriel. Sinon, vous pouvez exécuter les extraits de code dans l'éditeur Python en ligne de Geekflare.

Comment utiliser la fonction map() avec des fonctions définies par l'utilisateur

Utiliser la fonction map() avec des fonctions définies par l'utilisateur

#1. Précédemment, nous avons appliqué la fonction self_pow() à chaque nombre de la liste nums. Dans la syntaxe de la fonction map(), nous pouvons passer la fonction self_pow et la liste nums comme arguments.

RemarqueVous ne devez spécifier que le nom de la fonction et non un appel de fonction. Utilisez self_pow et non self_pow().

La fonction map() renvoie un objet map.

print(map(self_pow,nums))

<objet map à 0x7f7d315c14d0&gt

Nous pouvons ensuite transformer l'objet map en une liste à l'aide de la fonction list(), comme indiqué ci-dessous.

nums_pow = list(map(self_pow,nums))
print(nums_pow)

Voici la sortie où chaque num dans nums est mappé en numnum dans la liste nums_pow.

Résultat
[4, 256, 27, 823543]

#2. Considérez la fonction suivante inch_to_cm() qui convertit les pouces en centimètres. 1 pouce = 2,54 cm.

def inch_to_cm(inch) :
 return inch*2.54

Pour convertir les valeurs en pouces de la liste des pouces en centimètres, vous pouvez utiliser la fonction map(), comme indiqué dans la cellule de code ci-dessous.

inches = [5.54,3.4,1,25,8.2]
cms = list(map(inch_to_cm,inches))
print(cms)

La liste cms contient les valeurs en pouces exprimées en centimètres.

Résultat
[14.0716, 8.636, 2.54, 63.5, 20.828]

Comment utiliser la fonction map() avec des fonctions intégrées

Utiliser la fonction map() avec des fonctions intégrées

Dans cette section, nous allons apprendre à utiliser map() avec les fonctions intégrées de Python.

#1. La liste strings est une liste de langages de programmation. Vous souhaitez créer une nouvelle liste strings_upper qui contient les chaînes des langages de programmation en majuscules.

strings = ['JavaScript', 'Rust', 'Python', 'Go']

La méthode intégrée .upper() agit sur une chaîne et renvoie une copie formatée en majuscules.

strings_upper = list(map(str.upper,strings)) 
print(strings_upper)

La liste strings_upper inclut les chaînes de la liste strings formatées en majuscules.

Résultat
['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']

#2. La fonction intégrée len() de Python prend une séquence en argument et renvoie sa longueur. Pour trouver la longueur de chacune des chaînes de la liste des chaînes, nous pouvons utiliser la fonction map() et appliquer la fonction len() à chaque chaîne, comme indiqué ci-dessous.

strings_len = list(map(len,strings))
print(strings_len)
Résultat
[10, 4, 6, 2]

#3. Vous pouvez utiliser la fonction map() avec d'autres collections telles que les tuples.

L'exemple suivant contient un tuple contenant des informations sur le nombre de chambres, la superficie et la ville dans laquelle se trouve une maison.

En Python, la fonction type() renvoie le type de données de tout objet Python. Pour obtenir le type de données de tous les éléments de ce tuple, vous pouvez utiliser la fonction map() pour appeler la fonction type sur chaque élément du tuple.

house = (2,758.5,'Bangalore')
house_elt_type = tuple(map(type,house))
print(house_elt_type)

Nous avons transformé l'objet map en tuple. Vous pouvez également le transformer en liste ou en toute autre collection.

Dans la sortie ci-dessous, nous voyons que les types de données 2, 758,5 et Bangalore ont été déduits comme étant respectivement 'int', 'float' et 'str'.

Résultat
(<classe 'int'>, <classe 'float'>, <classe 'str'>)

#4. En Python, vous pouvez importer des modules intégrés et utiliser les fonctions définies dans les modules.

Pour calculer la racine carrée de chaque nombre de la liste nums, vous pouvez utiliser la fonction sqrt du module math.

import math
nums = [30,90,34,45,97]
nums_sqrt = list(map(math.sqrt,nums))
print(nums_sqrt)
Sortie
[5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]

La sortie ci-dessus est difficile à analyser et à suivre. Vous voudrez peut-être arrondir chaque valeur de racine carrée à deux décimales, par exemple.

Comment arrondir un nombre à virgule flottante en Python

Définissons une fonction round_2() qui prend une valeur à virgule flottante et l'arrondit à deux décimales.

def round_2(num) :
 return round(num,2)

Vous pouvez maintenant utiliser la fonction map() avec les listes round_2 et nums_sqrt.

nums_sqrt_round = list(map(round_2,nums_sqrt))
print(nums_sqrt_round)
Résultat
[5.48, 9.49, 5.83, 6.71, 9.85]

Vous pouvez également utiliser des fonctions map() imbriquées, où la fonction map interne est utilisée pour calculer la liste des racines carrées nums_sqrt, et la fonction map externe effectue l'opération d'arrondi.

nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums))))
print(nums_sqrt_round)
Sortie
[5.48, 9.49, 5.83, 6.71, 9.85]

Les résultats sont identiques dans les deux approches ci-dessus. Cependant, vous devez vous assurer que le code est lisible et facile à maintenir lorsque vous imbriquez des fonctions comme indiqué ci-dessus.

Comment utiliser la fonction map() avec les fonctions lambda

Utiliser la fonction map() avec les fonctions lambda

Dans les sections précédentes, vous avez appris à utiliser la fonction Python map() avec des fonctions intégrées et des fonctions définies par l'utilisateur. Vous allez maintenant apprendre à utiliser la fonction map() avec les fonctions lambda, qui sont anonymes en Python.

Parfois, vous disposez d'une fonction dont le corps ne contient qu'une seule ligne de code, et vous pouvez avoir besoin d'utiliser la fonction une seule fois et de ne pas y faire référence ailleurs dans le programme. Vous pouvez définir de telles fonctions comme des fonctions lambda en Python.

Note: lambda args : expression est la syntaxe générale pour utiliser une fonction lambda en Python.

#1. Considérez la liste suivante de chaînes de caractères. Supposons que vous souhaitiez obtenir une liste strings_rev - contenant une copie inversée de chacune des chaînes.

strings = ['JavaScript', 'Rust', 'Python', 'Go']

Nous pouvons inverser une chaîne Python en utilisant le découpage en tranches.

Remarque: il s'agit d'une généralisation de l'expression string slicing str[start:stop:step].

- Sans les valeurs start et stop, la tranche commence au début de la chaîne et s'étend jusqu'à la fin de la chaîne.
- Les valeurs négatives du pas donnent des tranches commençant à la fin de la chaîne.
- Par conséquent, str[::-1] renvoie une copie inversée de str.

Vous pouvez utiliser cette fonction lambda : lambda x:x[::-1]À l'intérieur de la fonction map, comme indiqué ci-dessous.

strings_rev = list(map(lambda x:x[::-1],strings))
print(strings_rev)

Comme dans les autres exemples, nous transformons l'objet map en liste. Dans la sortie, nous voyons que chacune des chaînes de la liste strings a été inversée.

Résultat
['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']

#2. Dans la section précédente, nous avons calculé la racine carrée de chaque nombre de la liste des nombres, puis nous avons arrondi chaque valeur de racine carrée à deux décimales.

Pour ce faire, nous avons utilisé la fonction round_2() . Réécrivons la fonction round_2() en tant que fonction lambda et utilisons-la avec la fonction map() décrite ci-dessous.

nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt))
print(nums_sqrt_round_l)

Comme on peut le voir ci-dessous, la sortie est identique à celle que nous avons obtenue en utilisant la fonction round_2().

Résultat
[5.48, 9.49, 5.83, 6.71, 9.85]

Comment utiliser la fonction map() avec plusieurs itérations

Utiliser la fonction map() avec plusieurs tables itératives

Dans les exemples précédents, nous avons appliqué une fonction à tous les éléments d'un seul itérable.

Parfois, nous pouvons avoir des fonctions qui prennent deux arguments ou plus. Dans ce cas, chaque argument est stocké dans une liste ou une collection similaire.

Nous pouvons également utiliser la fonction Python map() avec plusieurs listes.

#1. Considérez la fonction suivante area() qui accepte la longueur et la largeur comme entrées et renvoie la surface, longueur*largeur.

def area(length,breadth) :
 return length*breadth

La longueur et la largeur de différents rectangles sont stockées dans deux listes distinctes, respectivement les longueurs et les largeurs.

lengths = [4,8,10,18]
breadths = [9,4,6,11]

Nous pouvons utiliser la fonction map() pour appliquer la fonction aire aux listes ci-dessus en passant les listes des longueurs et des largeurs.

areas = list(map(area,lengths,breadths))
print(areas)

Comme la fonction area accepte deux arguments, les valeurs de longueur et de largeur sont utilisées à partir des listes lengths breadths, respectivement.

Résultat
[36, 32, 60, 198]

#2. Le module mathématique de Python dispose de la fonction log qui permet de calculer le logarithme d'un nombre dans n'importe quelle base.

Remarque: log(x, base) renvoie la valeur de log x à la base spécifiée par la valeur base, journal base x. Si la base n'est pas spécifiée, la valeur de base par défaut est e (log calcule le logarithme naturel).

Dans cet exemple :

  • La liste x correspond aux valeurs pour lesquelles vous souhaitez calculer le logarithme.
  • La liste base contient toutes les valeurs de base à utiliser dans le calcul du logarithme.
x = [2,6,12,10]
base = [2,3,2,5]

Nous pouvons utiliser la fonction Python map() avec math.log, les listes x et base pour obtenir la nouvelle liste log_x, comme suit.

log_x = list(map(math.log,x,base))
print(log_x)

Voici le résultat.

Résultat
[1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]

Conclusion

Voici un résumé de ce que vous avez appris dans ce tutoriel :

  • La fonction Python map() prend au moins deux arguments : une fonction et un itérable, avec la syntaxe map(function, iterable(s)).
  • La fonction peut être n'importe quel appelable Python valide.
  • Lorsque la fonction prend en compte k arguments, utilisez la fonction map() avec la fonction et chacun des k arguments dans un itérable.

Apprenez ensuite à travailler avec des ensembles en Python. Apprenez également à utiliser la fonction sleep de Python.

  • Bala Priya C
    Auteur
Merci à nos sponsors
D'autres lectures intéressantes sur le développement
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus