Функція map() виконує вказану функцію до кожного елементу ітерованого об’єкта (списку, кортежу тощо) та повертає ітератор, який містить результати. Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
numbers = [2, 4, 6, 8, 10] # Повертає число в квадраті def square(number): return number * number # Застосовуємо функцію square() до кожного елементу списку squared_numbers_iterator = map(square, numbers) # Конвертуємо в список squared_numbers = list(squared_numbers_iterator) print(squared_numbers) |
Результат:
[4, 16, 36, 64, 100]
Синтаксис функції map()
|
1 |
map(func, *iterables) |
Параметри функції map()
Функція map() приймає два параметри:
func — функція, яка застосовується до кожного елемента ітерованого об’єкта;
*iterables — будь-яка кількість ітерованих об’єктів (таких як множини, списки, кортежі тощо), може бути більше одного.
Значення, яке повертає функція map()
Функція map() повертає об’єкт класу map. Повернене значення може бути передано таким функціям як:
list() — для конвертації в список;
set() — для конвертації в множину тощо.
Приклад №1: Робота функції map()
|
1 2 3 4 5 6 7 8 9 10 11 |
def calculateSquare(n): return n*n numbers = (1, 2, 3, 4) result = map(calculateSquare, numbers) print(result) # Конвертуємо об'єкт map у множину numbersSquare = set(result) print(numbersSquare) |
Результат:
<map object at 0x7f722da129e8>
{16, 1, 4, 9}
У даному прикладі кожен елемент кортежу піднесено до квадрата. Оскільки функція map() очікує на передачу функції, при роботі з функцією map() зазвичай використовуються лямбда-функції.
Приклад №2: Як використовувати лямбда-функцію з функцією map()?
|
1 2 3 4 5 6 7 |
numbers = (1, 2, 3, 4) result = map(lambda x: x*x, numbers) print(result) # Конвертуємо об'єкт map у множину numbersSquare = set(result) print(numbersSquare) |
Результат:
<map object at 0x7fafc21ccb00>
{16, 1, 4, 9}
Немає жодної різниці у функціональності даного прикладу та прикладу №1.
Приклад №3: Передача кількох ітераторів у функцію map() з використанням лямбда-функції
Виконуємо операцію додавання елементів списків:
|
1 2 3 4 5 |
num1 = [4, 5, 6] num2 = [5, 6, 7] result = map(lambda n1, n2: n1+n2, num1, num2) print(list(result)) |
Результат:
[9, 11, 13]

(11 оцінок, середня: 4,18 з 5)