Функция Python map()

Карта Python

map() — встроенная функция Python, которая применяет функцию ко всем элементам заданного итерируемого объекта. Это позволяет писать простой и понятный код без использования циклов.

Функция Python map()

Функция map() имеет следующий вид:

 map ( function , iterable , ... )

Он принимает два обязательных аргумента:

  • function — Функция, которая вызывается для каждого элемента iterable .
  • iterable — один или несколько объектов, поддерживающих итерацию. Большинство встроенных объектов Python, таких как списки, словари и кортежи, являются итерируемыми.

В Python 3 map() возвращает объект карты, размер которого равен размеру переданного итерируемого объекта. В Python 2 функция возвращает список.

Давайте рассмотрим пример, чтобы лучше понять работу функции map() . Допустим, у нас есть список строк, и мы хотим преобразовать каждый элемент списка в верхний регистр.

Один из способов сделать это — использовать традиционный цикл for :

 directions = [ "north" , "east" , "south" , "west" ] directions_upper = [] for direction in directions : d = direction . upper () directions_upper . append ( d ) print ( directions_upper )
 ['NORTH', 'EAST', 'SOUTH', 'WEST']

С функцией map() код станет намного проще и гибче.

 def to_upper_case ( s ): return s . upper () directions = [ "north" , "east" , "south" , "west" ] directions_upper = map ( to_upper_case , directions ) print ( list ( directions_upper ))

Мы используем конструктор list() для преобразования возвращаемого объекта карты в список :

 ['NORTH', 'EAST', 'SOUTH', 'WEST']

Если функция обратного вызова простая, то более питоновский способ — использовать лямбда-функцию:

 directions = [ "north" , "east" , "south" , "west" ] directions_upper = map ( lambda s : s . upper (), directions ) print ( list ( directions_upper ))

Лямбда-функция — это небольшая анонимная функция.

Вот еще один пример, показывающий, как создать список квадратных чисел от 1 до 10:

 squares = map ( lambda n : n * n , range ( 1 , 11 )) print ( list ( squares ))
 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Функция range() генерирует последовательность целых чисел.

Использование map() с несколькими итерируемыми объектами

Вы можете передать функции map() любое количество итерируемых объектов. Количество обязательных входных аргументов, принимаемых функцией обратного вызова, должно совпадать с количеством итерируемых объектов.

В следующем примере показано, как выполнить поэлементное умножение двух списков:

 def multiply ( x , y ): return x * y a = [ 1 , 4 , 6 ] b = [ 2 , 3 , 5 ] result = map ( multiply , a , b ) print ( list ( result ))
 [2, 12, 30]

Тот же код, но с использованием лямбда-функции будет выглядеть так:

 a = [ 1 , 4 , 6 ] b = [ 2 , 3 , 5 ] result = map ( lambda x , y : x * y , a , b ) print ( list ( result ))

Если указано несколько итерируемых объектов, размер возвращаемого объекта равен самому короткому итерируемому объекту.

Давайте рассмотрим пример, когда итерируемые элементы имеют разную длину:

 a = [ 1 , 4 , 6 ] b = [ 2 , 3 , 5 , 7 , 8 ] result = map ( lambda x , y : x * y , a , b ) print ( list ( result ))

Лишние элементы (7 и 8) игнорируются:

 [2, 12, 30]

Заключение

Функция map() в Python принимает итерируемый объект вместе с функцией и применяет эту функцию к каждому элементу итерируемого объекта.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

питон

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *