Fonction map() de Python

La fonction map() de Python est utilisée pour appliquer une fonction à tous les éléments d’un itérable spécifié et retourner un objet carte. L’objet carte de Python est un itérateur, donc nous pouvons itérer sur ses éléments. Nous pouvons également convertir l’objet carte en objets de séquence tels que list, tuple, etc. en utilisant leurs fonctions de fabrique.

La fonction map() de Python

La syntaxe de la fonction map() de Python est la suivante :

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 de la carte s’arrête lorsque l’itérable le plus court est épuisé.

Exemple de 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 retourne la représentation 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 imprime les éléments de l’itérateur avec un espace blanc 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

Examinons un exemple de fonction map() avec différents types d’itérables.

Python map() avec une chaîne de caractères

# map() avec une chaîne de caractères
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)

Sortie:

<class 'map'>
A B C 

Python map() avec un tuple

# map() avec un tuple
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)

Sortie:

1 A ABC 

Python map() avec une liste

map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)

Sortie:

X A ABC 

Conversion de map en liste, tuple, ensemble

Comme l’objet map est un itérateur, nous pouvons le passer comme argument aux méthodes de fabrication 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')

Python map() 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 

Fonctions map() Python avec plusieurs arguments

Jetons un coup d’œil à un exemple d’utilisation de la fonction map() avec plusieurs arguments itérables.

# map() avec plusieurs arguments itérables
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 map 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 sont de tailles différentes.

# map() avec plusieurs arguments itérables de tailles différentes
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é.

Fonctions map() Python avec fonction 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 plus d’exemples Python depuis notre Dépôt GitHub .

Référence: Documentation officielle

Source:
https://www.digitalocean.com/community/tutorials/python-map-function