Опубликован: 18.08.2023 87
Функция map()
это встроенная функция Python, которая принимает на вход два обязательных аргумента (функцию function
и итерируемый объект iterable
) и применяет function
к каждому элементу итератора iterable
без использования цикла for
, методом сопоставления (mapping). При этом каждый элемент iterable
отправляется в функцию function
в качестве аргумента.
Если в map()
передаётся несколько iterable
, то пользовательская функция function
должна принимать количество аргументов, соответствующее количеству переданных последовательностей, при этом function
будет применяться к элементам из всех итераций параллельно.
Синтаксис: map (function, iterable, ...)
function
- функция, применяемая к каждому элементу итерируемого объекта;iterable
- итерируемый объект (список, словарь, массив и т.п.).Функция map()
возвращает специальный объект map, который является итератором и содержит результаты преобразования исходного объекта (объектов).
Самый простой способ получить результаты из map-итератора, это преобразовать его в коллекцию, используя функции list()
, set()
или tuple()
.
Пользовательская функция function
, используемая в map()
, должна принимать столько аргументов, сколько последовательностей передается в функцию map()
:
def plus(a, b, c):
return a + b + c
# функция plus применяется к элементам
# из всех последовательностей параллельно
x = map(plus, [1, 2], [3, 4], [5, 6])
print(list(x))
[9, 12]
При использовании нескольких последовательностей, функция map()
останавливается, когда исчерпывается самая короткая итерация.
# вычисление при помощи встроенной функции pow()
# x в степени y для каждого элемента 2-х списков
x = [1, 2, 3]
y = [4, 5, 6, 7]
list(map(pow, x, y))
[1, 32, 729]
# преобразования списка целых чисел в кортеж, элементы которого
# равны квадратному корню элементов исходного списка
from math import sqrt
list_a = list(range(10))
print(tuple(map(sqrt, list_a)))
(0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979, 2.449489742783178,
2.6457513110645907, 2.8284271247461903, 3.0)
# возведение элементов списка в степень 4
list_a = list(range(10))
def my_func(x):
return x**4
print(list(map(my_func, list_a)))
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561]
# преобразование элементов списка из строки в целое число
str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]
int_nums = map(int, str_nums)
print(int_nums)
<map object at 0x10a591e10>
print(list(int_nums))
[4, 8, 6, 5, 3, 2, 8, 9, 2, 5]
# использование map() с лямбда-функцией
numbers = [1, 2, 3, 4, 5]
squared = map(lambda num: num ** 2, numbers)
print(list(squared))
[1, 4, 9, 16, 25]
Преобразование строковых чисел в обычные числа.
При вводе с клавиатуры массива чисел с помощью функции input()
мы всегда получаем строковые значения. Для их преобразования в массив целых чисел можно использовать функцию map()
:
# преобразование строковых значений чисел
b = map(int, ['1', '2', '3', '5', '7'])
print(list(b))
[1, 2, 3, 5, 7] # список целых чисел
# преобразование списка из строковых значений чисел в список целых чисел
s = map(int, input().split()) # ввод строки чисел 1 5 7 8 9
print(list(s))
[1, 5, 7, 8, 9]
В этом примере input().split()
возвращает список из строк введенных чисел, к каждой строке применяется функция int()
и с помощью функции list()
генератор s
преобразуется в список из чисел.
Оценка основных статистических метрик набора данных в Python
Область эффективного использования lambda функции в Python
Логические выражения if ... else в Pythonic стиле
Способы удаления лишних пробелов в строке
Комментариев нет.