fonction map() de Python
La fonction map() en Python est utilisée pour appliquer une fonction à tous les éléments d'un itérable spécifié et renvoyer un objet map. L'objet map de Python est un itérateur, nous pouvons donc itérer sur ses éléments. Nous pouvons également convertir un objet map en objets de séquence comme liste, tuple, etc. en utilisant leurs fonctions de fabrication.
fonction map() en Python
La syntaxe de la fonction map() de Python est :
map(function, iterable, ...)
Nous pouvons passer plusieurs arguments itérables à la fonction map(), dans ce cas, la fonction spécifiée doit avoir autant d'arguments. La fonction sera appliquée à ces éléments itérables en parallèle. Avec plusieurs arguments itérables, l'itérateur map s'arrête lorsque l'itérable le plus court est épuisé.
Exemple de la fonction map() en Python
Écrivons une fonction à utiliser avec la fonction map() .
def to_upper_case(s):
return str(s).upper()
C'est une fonction simple qui renvoie la représentation de chaîne en majuscules de l'objet d'entrée. Je définis également une fonction utilitaire pour imprimer les éléments de l'itérateur. La fonction imprimera les éléments de l'itérateur avec des espaces et sera réutilisée dans tous les extraits de code.
def print_iterator(it):
for x in it:
print(x, end=' ')
print('') # for new line
Regardons un exemple de la fonction map() avec différents types d'itérables.
Python map() avec chaîne
map() with string
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)
Sortie :
<class 'map'>
A B C
Fonction map() de Python avec tuple
map() with tuple
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Sortie :
1 A ABC
Fonction map() de Python avec liste
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Sortie :
X A ABC
Conversion de la carte en liste, tuple, ensemble
Étant donné que l'objet map est un itérateur, nous pouvons le passer comme argument aux méthodes de fabrique pour créer une liste, un tuple, un ensemble, etc.
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_list = list(map_iterator)
print(my_list)
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_set = set(map_iterator)
print(my_set)
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_tuple = tuple(map_iterator)
print(my_tuple)
Sortie :
['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')
Fonction map() de Python avec lambda
Nous pouvons utiliser des fonctions lambda avec map() si nous ne voulons pas les réutiliser. C'est utile lorsque notre fonction est petite et que nous ne voulons pas définir une nouvelle fonction.
list_numbers = [1, 2, 3, 4]
map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)
Sortie :
2 4 6 8
Python map() avec plusieurs arguments
Regardons un exemple d'utilisation de la fonction map() avec plusieurs arguments itérables.
map() with multiple iterable arguments
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)
Sortie : 5 12 21 32 Remarquez que notre fonction a deux arguments. L'itérateur de la carte de sortie est le résultat de l'application de cette fonction aux deux éléments itérables en parallèle. Voyons ce qui se passe lorsque les itérables ont des tailles différentes.
map() with multiple iterable arguments of different sizes
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8, 9, 10)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)
map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
print_iterator(map_iterator)
Sortie :
5 12 21 32
5 12 21 32
Ainsi, lorsque les arguments sont de tailles différentes, la fonction map est appliquée aux éléments jusqu'à ce que l'un d'eux soit épuisé.
Fonction map() de Python avec un argument None
Voyons ce qui se passe lorsque nous passons la fonction comme None.
map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
print(x)
Sortie :
Traceback (most recent call last):
File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in <module>
for x in map_iterator:
TypeError: 'NoneType' object is not callable
Vous pouvez consulter le script Python complet et d'autres exemples de Python sur notre dépôt GitHub.
Référence : Documentation officielle
