Вступ до вбудованої функції map() Python
Функція map()
— це потужна та універсальна вбудована функція в Python, яка дозволяє застосовувати функцію до кожного елемента в ітерації (наприклад, список або кортеж) і повертати об’єкт карти, який ітератор. Ця функція є важливою для будь-якого програміста на Python, який хоче писати чистий, ефективний код на Python.
Що таке функція map()
?
Функція map()
у Python приймає два основні аргументи: функцію та ітерацію. Він застосовує функцію до всіх елементів ітерованого і повертає ітератор (об’єкт map
), що містить результати.
Синтаксис map()
такий:
map(function, iterable, ...)
Тут function
— це функція, яка буде застосована до кожного елемента в iterable, а iterable
може бути будь-яким iterable Python, таким як список, кортеж або рядок. Ви також можете надати кілька ітерацій, і функція повинна приймати стільки аргументів, скільки є ітерацій.
Базове використання map()
Давайте подивимося на простий приклад, де ми використовуємо map()
для зведення кожного числа в списку у квадрат:
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
У цьому прикладі функція square()
застосована до кожного елемента списку numbers
, а результати повертаються як новий ітератор. Ми використовуємо list()
, щоб перетворити ітератор на список для зручного перегляду.
Використання map()
з лямбда-функціями
Замість визначення окремої функції ви можете використовувати лямбда-функцію, щоб зробити свій код більш лаконічним. Лямбда-функції — це невеликі анонімні функції, визначені за допомогою ключового слова lambda
. Ось як можна використовувати лямбда-функцію з map()
:
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x * x, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
У цьому випадку ми визначаємо функцію безпосередньо всередині виклику map()
, роблячи код коротшим і більш читабельним.
Відображення кількох ітерацій
Функція map()
також може приймати більше однієї ітерації. У таких випадках надана функція повинна мати стільки аргументів, скільки ітерацій. Потім функція map()
застосує функцію, використовуючи відповідні елементи з кожного ітерованого.
Наприклад, додамо відповідні елементи з двох списків:
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
summed_numbers = map(lambda x, y: x + y, numbers1, numbers2)
print(list(summed_numbers)) # Output: [5, 7, 9]
Тут лямбда-функція приймає два аргументи, x
і y
, які відповідають елементам з numbers1
і numbers2
відповідно, і повертає їхні сума
Перетворення об’єкта map
на інші типи даних
Функція map()
повертає ітератор, який є об’єктом, який можна перебирати, але сам по собі не є списком. Щоб використовувати результат у різних контекстах, ви можете перетворити його на інший тип даних, як-от список, кортеж або набір:
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x * x, numbers)
print(list(squared_numbers)) # Convert to list: [1, 4, 9, 16, 25]
print(tuple(squared_numbers)) # Convert to tuple: ()
print(set(squared_numbers)) # Convert to set: set()
Зауважте, що як тільки ітератор вичерпано (наприклад, шляхом перетворення його на список), він не може бути повторно використаний. Тому наступні перетворення повертатимуть порожні колекції.
Практичне застосування map()
Функція map()
особливо корисна в парадигмах обробки даних і функціонального програмування. Ось кілька типових програм:
- Застосування функції до кожного елемента в списку або масиві (наприклад, нормалізація даних).
- Перетворення типів даних (наприклад, перетворення списку рядків у список цілих чисел).
- Об’єднання кількох ітерацій паралельним способом (наприклад, поелементні операції над двома списками).
- Очищення або перетворення даних (наприклад, обрізання пробілів або застосування перетворень).
Висновок
Функція map()
— це універсальний і потужний інструмент у Python, який спрощує застосування функцій до ітерованих елементів. Розуміючи, як ефективно використовувати map()
, ви зможете писати чистіший, ефективніший код на Pythonic. Незалежно від того, початківець ви чи досвідчений розробник, оволодіння map()
допоможе вам у багатьох сценаріях програмування.