Python Функция map() с ПРИМЕРИ
⚡ Умно обобщение
Python map() прилага дадена функция към всеки елемент от итерабилен обект, като например списък, кортеж, множество, речник или низ. Тя връща lazy map обект, който се конвертира с list() или се итерира с помощта на цикъл.
Синтаксис
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-loop или метода 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().
Ето един работещ пример за използване на set като итератор вътре в 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: Предаване на един Tuple и итератор за списък към 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']

