Функция map в python

func — Функция, которую следует применить к элементам последовательности или последовательностей. Должна принимать количество элементов равное количеству последовательностей.
-py3.0 Если передано None, считается что требуется применить тождественное отображение (lambda *args: args), при этом, если передано несколько последовательностей результат будет содержать кортежи с данными из каждой из них.

iterable — Последовательность (или объект, поддерживающий итерирование), к элементам которой требуется применить функцию.
-py3.0 Если в какой-либо из последовательностей количество элементов меньше, чем в остальных, недостающие элементы считаются None.
+py3.0 Итератор останавливается, когда самая короткая из последовательностей исчерпана.

Python это высокоуровневый, интерпретируемый, интерактивный и объектно-ориентированный скриптовой язык программирования. Python был разработан как "легкочитаемый" язык, часто использующий в качестве ключевых слов слова английского языка.

Файл изготовлен по материалам сайта http://pythonicway.com/

Книга: Введение в Python

Функция map() в Python:

Функция map() в Python:

В Python функция map принимает два аргумента: функцию и аргумент составного типа данных, например, список. map применяет к каждому элементу списка переданную функцию. Например, вы прочитали из файла список чисел, изначально все эти числа имеют строковый тип данных, чтобы работать с ними – нужно превратить их в целое число:

1 | old_list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’]
2 |
3 | new_list = []
4 | for item in old_list:
5 | new_list.append(int(item))
6 |
7 | print (new_list)
8 |
9 | [1, 2, 3, 4, 5, 6, 7]

Тот же эффект мы можем получить, применив функцию map:

1 | old_list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’]
2 | new_list = list(map(int, old_list))
3 | print (new_list)
4 |
5 | [1, 2, 3, 4, 5, 6, 7]

Как видите такой способ занимает меньше строк, более читабелен и выполняется быстрее. map также работает и с функциями созданными пользователем:

1 | def miles_to_kilometers(num_miles):
2 | """ Converts miles to the kilometers """
3 | return num_miles * 1.6
4 |
5 | mile_distances = [1.0, 6.5, 17.4, 2.4, 9]
6 | kilometer_distances = list(map(miles_to_kilometers, mile_distances))
7 | print (kilometer_distances)
[1.6, 10.4, 27.84, 3.84, 14.4]

А теперь то же самое, только используя lambda выражение:

1 | mile_distances = [1.0, 6.5, 17.4, 2.4, 9]
2 | kilometer_distances = list(map(lambda x: x * 1.6, mile_distances))
3 |
4 | print (kilometer_distances)
[1.6, 10.4, 27.84, 3.84, 14.4]

Функция map может быть так же применена для нескольких списков, в таком случае функция-аргумент должна принимать количество аргументов, соответствующее количеству списков:

1 | l1 = [1,2,3]
2 | l2 = [4,5,6]
3 |
4 | new_list = list(map(lambda x,y: x + y, l1, l2))
5 | print (new_list)
[5, 7, 9]

Если же количество элементов в списках совпадать не будет, то выполнение закончится на минимальном списке:

1 | l1 = [1,2,3]
2 | l2 = [4,5]
3 |
4 | new_list = list(map(lambda x,y: + y, l1, l2))
5 |
6 | print (new_list)
[5,7]

Введение в Python

Поиск

Новое на сайте

Функциональное программирование в Python: lambda, zip, filter, map reduce

Функциональным называется такой подход к процессу программирования, в программа рассматривается как вычисление математических функций, при этом не используются состояния и изменяемые объекты. Как правило, когда говорят о элементах функционального программировании в Python, то подразумеваются следующие функции: lambda, map, filter, reduce, zip.

Lambda выражение в Python:

lambda оператор или lambda функция в Python это способ создать анонимную функцию, то есть функцию без имени. Такие функции можно назвать одноразовыми, они используются только при создании. Как правило, lambda функции используются в комбинации с функциями filter, map, reduce.

Синтаксис lambda выражения в Python

В качестве arguments передается список аргументов, разделенных запятой, после чего над переданными аргументами выполняется expression. Если присвоить lambda-функцию переменной, то получим поведение как в обычной функции (делаем мы это исключительно в целях демонстрации)

Но, конечно же, все преимущества lambda-выражений мы получаем, используя lambda в связке с другими функциями

Функция map() в Python:

В Python функция map принимает два аргумента: функцию и аргумент составного типа данных, например, список. map применяет к каждому элементу списка переданную функцию. Например, вы прочитали из файла список чисел, изначально все эти числа имеют строковый тип данных, чтобы работать с ними – нужно превратить их в целое число:

Тот же эффект мы можем получить, применив функцию map:

Как видите такой способ занимает меньше строк, более читабелен и выполняется быстрее. map также работает и с функциями созданными пользователем:

А теперь то же самое, только используя lambda выражение:

Функция map может быть так же применена для нескольких списков, в таком случае функция-аргумент должна принимать количество аргументов, соответствующее количеству списков:

Если же количество элементов в списках совпадать не будет, то выполнение закончится на минимальном списке:

Функция filter() в Python:

Функция filter предлагает элегантный вариант фильтрации элементов последовательности. Принимает в качестве аргументов функцию и последовательность, которую необходимо отфильтровать:

Обратите внимание, что функция, передаваемая в filter должна возвращать значение True / False, чтобы элементы корректно отфильтровались.

Функция reduce() в Python:

Функция reduce принимает 2 аргумента: функцию и последовательность. reduce() последовательно применяет функцию-аргумент к элементам списка, возвращает единичное значение. Обратите внимание в Python 2.x функция reduce доступна как встроенная, в то время, как в Python 3 она была перемещена в модуль functools.

Вычисление суммы всех элементов списка при помощи reduce:

Вычисление наибольшего элемента в списке при помощи reduce:

Функция zip() в Python:

Функция zip объединяет в кортежи элементы из последовательностей переданных в качестве аргументов.

Обратите внимание, что zip прекращает выполнение, как только достигнут конец самого короткого списка.

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

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