Вступ до вбудованої функції 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() допоможе вам у багатьох сценаріях програмування.