Функція map() в Python: як з нею працювати
Функція map() в Python зазвичай використовується для обробки таких об’єктів, як списки, кортежі та інші послідовності. Завдяки їй можна застосовувати задану функцію до кожного елемента послідовності, з поверненням нового ітератора з результатами. Зміст цієї статті присвячено основним принципам використання та роботи функції map(), її синтаксису, прикладам коду та варіантам практичного застосування.
Синтаксис функції map() виглядає наступним чином:
map(function, iterable, ...)
Функція повертає об’єкт типу map, який є ітератором. Щоб отримати результат у вигляді списку чи іншого типу даних, ітерований об’єкт потрібно конвертувати.
Перед нами нескладне завдання: у нас є список чисел і нам треба обчислити квадрат кожного числа.
numbers = [3, 6, 8, 9, 13] squared_numbers = map(lambda x: x**2, numbers) print(list(squared_numbers)) # Виведе: [9, 36, 62, 81, 169]
У цьому фрагменті коду ми використали lambda-функцію, яка виконує обчислення квадрата кожного числа, і застосували її до елементів зі списку numbers.
Ми можемо ефективно використовувати map() при обробці кількох ітеративних об’єктів, за умови що функція, яка передається, приймає відповідну кількість аргументів. Ось ще один фрагмент коду, в якому треба додати елементи з двох списків:
list1 = [10, 20, 30] list2 = [40, 50, 60] summed_list = map(lambda x, y: x + y, list1, list2) print(list(summed_list)) # Виведе: [50, 70, 90]
Як бачите, ми успішно додали елементи з двох списків, використовуючи лямбда-функції.
Функція map() часто використовується з вбудованими функціями Python, такими як str(), int() чи float(). Давайте для прикладу перетворимо список рядків у цілі числа:
str_numbers = ['3', '4', '5'] int_numbers = map(int, str_numbers) print(list(int_numbers)) # Виведе: [3, 4, 5]
Цей випадок доводить, що конвертація типів даних у списку за допомогою map() може бути дуже легкою.
Крім lambda, можна використовувати звичайні функції, які заздалегідь визначені. Наприклад, помножимо кожне число списку на два:
def multiply_by_two(x): return x * 2 numbers = [10, 20, 30, 40] doubled_numbers = map(multiply_by_two, numbers) print(list(doubled_numbers)) # Виведе: [20, 40, 60, 80]
Функція multiply_by_two() множить кожен елемент списку на два.
Серед переваг, які має в Python функція map(), варто виділити:
Поряд з очевидними плюсами, не обійшлося і без мінусів:
У більшості випадків map() використовується разом з функціями filter(), reduce(), або list comprehensions. Тобто, ви можете об’єднувати map() з filter(), щоб спочатку застосувати функцію до елементів, а вже потім використати до них фільтр за певними вимогами.
numbers = [1, 2, 3, 4, 5, 6] even_squares = filter(lambda x: x % 2 == 0, map(lambda x: x**2, numbers)) print(list(even_squares)) # Виведе: [4, 16, 36]
У цьому фрагменті коду ми обчислюємо квадрат кожного числа, а потім фільтруємо ті, які є парними.
1. Робота з текстом
Припустимо, у нас є список з іменами людей, всі літери яких написані у нижньому регістрі, а нам треба, щоб ім’я починалось з великої літери:
names = ['john', 'mary', 'jane'] capitalized_names = map(str.capitalize, names) print(list(capitalized_names)) # Виведе: ['John', 'Mary', 'Jane']
2. Обчислення символьних даних
Можна використовувати map() для отримання кількості символів у словах:
words = ['apple', 'banana', 'cherry'] lengths = map(len, words) print(list(lengths)) # Виведе: [5, 6, 6]
3. Обробка інформації
Наприклад, у нас є файл, в якому містяться числа, записані як рядки. Нам потрібно перетворити їх просто в список чисел:
with open('numbers.txt') as file: lines = file.readlines() numbers = map(int, lines) print(list(numbers))
Іноді замість map() ви можете використовувати list comprehensions або генератори. Ось приклад коду:
numbers = [2, 4, 5, 7, 9] squared_numbers = [x**2 for x in numbers] print(squared_numbers) # Виведе: [4, 16, 25, 49, 81]
Багатьом здається, що list comprehensions виглядає більш читабельно, ніж map().
Функція map() є доволі зручним інструментом для програмування в Python, який можна використовувати для обробки послідовностей даних. Вона чудово підходить для таких випадків, як застосування функцій до кожного елемента ітеративного об’єкта або одночасної обробки значень в кількох ітеративних об’єктах. Хоча вона має деякі незручності, такі як складність читання складних виразів, map() дає розробнику перевагу у вигляді високої продуктивності та збереження пам’яті. Ці дві переваги роблять map() оптимальним варіантом для роботи з великими обсягами даних в Python.
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…