Python Функція map() з ПРИКЛАДАМИ

⚡ Розумний підсумок

Python map() застосовує задану функцію до кожного елемента ітерованого об'єкта, такого як список, кортеж, набір, словник або рядок. Вона повертає лінивий об'єкт map, який ви конвертуєте за допомогою list() або виконуєте ітерацію за допомогою циклу.

  • 🔢 Синтаксис: map() приймає функцію плюс один або декілька ітерабельних об'єктів та застосовує цю функцію до кожного елемента.
  • 🔁 Повернене значення: map() повертає лінивий об'єкт карти, тому обгорніть його в list(), tuple() або set(), щоб переглянути результати.
  • 🧩 Ітерабельні об'єкти: Списки, кортежі, множини, словники та рядки працюють як вхідні дані для map().
  • Лямбда: Поєднання map() з лямбда-виразом дозволяє уникнути визначення окремої іменованої функції для простих перетворень.
  • Кілька ітерабельних об'єктів: Передача кількох ітерабельних об'єктів застосовує функцію до них паралельно, зупинкаping у найкоротший термін.
  • 🤖 Допомога AI: Помічники штучного інтелекту, такі як GitHub Copilot, генерують виклики map(), а перетворення у стилі карти передають дані через конвеєри машинного навчання.

Python Функція map().

синтаксис

map(function, iterator1,iterator2 ...iteratorN)

Параметри

Ось два важливі параметри:

  • функція: Обов'язкова функція, яку потрібно надати map(), що буде застосовано до всіх елементів, доступних в ітераторі.
  • ітератор: Обов'язковий ітерований об'єкт. Це може бути список, кортеж тощо. Ви можете передавати кілька об'єктів-ітераторів до функції map().

значення, що повертається

Функція map() застосовує задану функцію до всіх елементів всередині ітератора та повертає ітерований об'єкт map, тобто кортеж, список тощо.

Як працює функція map()?

Функція map() приймає два вхідні дані: функцію та ітерований об'єкт. Функція, що надається map(), є звичайною функцією, і вона перебирає всі значення, присутні в ітерованому об'єкті.

Наприклад, уявіть, що у вас є список чисел, і ви хочете знайти квадрат кожного з чисел.

Щоб отримати результат, нам потрібна функція, яка повертатиме квадрат заданого числа. Ця функція виглядає наступним чином:

def square(n):
	return n*n

Список елементів, для яких ми хочемо знайти квадрат, такий:

my_list = [2,3,4,5,6,7,8,9]

Тепер скористаємося вбудованою функцією map(), щоб отримати квадрат кожного з елементів у my_list.

Остаточний код виглядає наступним чином:

def square(n):
    return n*n
my_list = [2,3,4,5,6,7,8,9]
updated_list = map(square, my_list)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]

Вихід функції map(), як показано вище, є об'єктом карти, що відображається на екрані як .

Вам доведеться перебрати вивід map() за допомогою циклу for або методу list(), щоб отримати кінцевий результат. Я використав list() у коді для відображення значень у заданому списку.

Отже, використовуючи функцію map(), ми можемо отримати квадрат кожного числа. Список, наданий map(), був [2,3,4,5,6,7,8,9], а використовуючи функцію square(), ми отримали результат [4, 9, 16, 25, 36, 49, 64, 81].

Функція map() застосовує функцію square() до всіх елементів списку. Наприклад, вона приймає змінну my_list та оновлює список квадратом кожного числа. Вивід зберігається у змінній updated_list.

Використання map() з Python вбудовані функції

Команда Python Функція map() є вбудованою функцією, і її також можна використовувати з іншими вбудованими функціями, доступними в PythonУ цьому прикладі ми скористаємося Python Вбудована функція round() округляє задані значення.

приклад:

Список, який у мене є, має вигляд my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Мені потрібні округлені значення для кожного елемента у списку, тому ми скористаємося round() як функцією для map().

my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
updated_list = map(round, my_list)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]

Функція round() застосовується до всіх елементів у списку та повертає список із округленими значеннями, як показано у виводі.

Використання map() із рядком як ітератор

Ми також можемо використовувати map() для рядка. в Python, рядок діє як масив, тому ми можемо легко використовувати його всередині map().

У цьому прикладі у нас є функція myMapFunc(), яка перетворює заданий рядок у верхній регістр. Функція myMapFunc() надається функції map(). Функція map() перетворює заданий рядок у верхній регістр, передаючи його до myMapFunc().

def myMapFunc(s):
    return s.upper()
my_str = "welcome to guru99 tutorials!"
updated_list = map(myMapFunc, my_str)
print(updated_list)
for i in updated_list:
    print(i, end="")

вихід:

<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!

Використання map() зі списком Numbers

Щоб працювати зі списком у map(), ми візьмемо список чисел і помножимо кожне число у списку на 10.

Список, який ми будемо використовувати, це [2,3,4,5,6,7,8,9]. Функція myMapFunc() бере на себе множення заданого числа на 10. Функція передається до map() разом зі списком.

приклад:

def myMapFunc(n):
    return n*10

my_list = [2,3,4,5,6,7,8,9]

updated_list = map(myMapFunc, my_list)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]

Вивід, який ми бачимо, полягає в тому, що кожне число у списку множиться на 10.

Використання map() із Tuple

Кортеж - це об'єкт у Python елементи якого розділені комами та укладені в круглі дужки. У цьому прикладі ми візьмемо кортеж зі значеннями рядка. Функція, яку ми використовуватимемо, перетворить задані значення у верхній регістр.

приклад:

def myMapFunc(n):
    return n.upper()

my_tuple = ('php','java','python','c++','c')

updated_list = map(myMapFunc, my_tuple)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x0000009C3C3A16A0>
['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

Вихід, який ми отримуємо, — це кортеж, у якому всі значення перетворені у верхній регістр.

Використання map() зі словником

A словник в Python створюється за допомогою фігурних дужок ({}). Оскільки словник є ітератором, ви можете використовувати його всередині функції map(). Тепер використаємо словник як ітератор всередині map().

У наступному прикладі показано роботу ітератора словника всередині map():

def myMapFunc(n):
    return n*10
my_dict = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_dict)
print(finalitems)
print(list(finalitems))

вихід:

<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Використання map() із Set

Набір у Python — це невпорядкована колекція елементів у фігурних дужках ({}). Оскільки set() також є ітератором, ви можете використовувати його всередині функції map().

Ось робочий приклад використання набору як ітератора всередині map():

def myMapFunc(n):
    return n*10
my_set = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_set)
print(finalitems)
print(list(finalitems))

вихід:

<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Використання map() із функцією Lambda

In Python, лямбда-вирази використовуються для створення анонімних функцій. Вам доведеться використовувати ключове слово lambda так само, як ви використовуєте def для визначення звичайних функцій.

Отже, у цьому прикладі ми будемо використовувати лямбда-функцію всередині map(). Лямбда-функція помножить кожне значення у списку на 10.

приклад:

my_list = [2,3,4,5,6,7,8,9]
updated_list = map(lambda x: x * 10, my_list)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]

Використання кількох ітераторів у функції map()

Приклад 1: Передача двох ітераторів списку до map()

Ви можете одночасно надсилати до функції map() більше одного ітератора, тобто список, кортеж тощо.

Наприклад, якщо ви хочете додати два списки, те саме можна зробити за допомогою функції map(). Ми будемо використовувати два списки, my_list1 та my_list2.

У наведеному нижче прикладі перший елемент зі списку my_list1 додається до першого елемента зі списку my_list2. Функція myMapFunc() приймає елементи зі списків my_list1 та my_list2 і повертає суму обох.

Ось робочий приклад додавання двох заданих списків за допомогою функції map().

def myMapFunc(list1, list2):
    return list1+list2

my_list1 = [2,3,4,5,6,7,8,9]
my_list2 = [4,8,12,16,20,24,28]

updated_list = map(myMapFunc, my_list1,my_list2)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]

Приклад 2: Передача одного кортежу та ітератора списку до map()

Ми використовуватимемо список та ітератор кортежу у функції map(). Функція myMapFunc(), передана map(), отримає елементи зі списку та кортежу. Елементи будуть з'єднані символом підкреслення (_). Робочий приклад показано нижче:

def myMapFunc(list1, tuple1):
    return list1+"_"+tuple1

my_list = ['a','b', 'b', 'd', 'e']
my_tuple = ('PHP','Java','Python','C++','C')

updated_list = map(myMapFunc, my_list,my_tuple)
print(updated_list)
print(list(updated_list))

вихід:

<map object at 0x00000059F37BB4E0>
['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

Поширені запитання

Обидва застосовують операцію до кожного елемента. Спискове сприйняття часто є більш читабельним і повертає список безпосередньо, тоді як map() повертає лінивий об'єкт map і може бути швидшим при повторному використанні існуючої іменованої функції.

Ні. map() ніколи не змінює оригінальний ітерований об'єкт. Він зчитує кожен елемент, застосовує вашу функцію та створює новий лінивий об'єкт map, залишаючи вихідний список, кортеж або рядок недоторканими.

In Python 3, map() є лінивим: він повертає об'єкт map, який обчислює значення лише під час ітерації. Це економить пам'ять при великих обсягах даних. Оберніть його в list() або переберіть у циклі, щоб отримати результати.

map() перетворює кожен елемент, filter() зберігає лише ті елементи, які пройшли перевірку, а reduce() (з functools) об'єднує всі елементи в одне значення. Разом вони охоплюють операції перетворення, вибору та агрегації.

Коли ітерабельні об'єкти відрізняються за довжиною, map() зупиняється на найкоротшому з них. Зайві елементи в довших ітерабельних об'єктах ігноруються, тому помилка не виникає, і результат відповідає найкоротшому ітерабельному об'єкту.

Ні. Об'єкт map — це ітератор, який вичерпується після одного проходу. Після того, як ви переберете його в циклі або викликаєте list() для нього, він стане порожнім. Спочатку перетворіть його на список, якщо вам потрібно повторне використання.

У машинному навчанні map() застосовує функції попередньої обробки до наборів даних, такі як масштабування чисел, токенізація тексту або перетворення ознак перед навчанням. Це надає чистий, функціональний спосіб виконання однієї й тієї ж операції над багатьма зразками.

Так. GitHub Copilot автоматично доповнює виклики map() правильною функцією та ітерабельними об'єктами, а агентні інструменти штучного інтелекту можуть рефакторувати цикли у вирази map(), а потім запускати тести, щоб підтвердити, що поведінка не змінилася.

Підсумуйте цей пост за допомогою: