Python Funkcja map() z PRZYKŁADAMI

⚡ Inteligentne podsumowanie

Python Funkcja map() stosuje daną funkcję do każdego elementu obiektu iterowalnego, takiego jak lista, krotka, zbiór, słownik lub ciąg znaków. Zwraca ona leniwy obiekt mapy, który można konwertować za pomocą funkcji list() lub iterować za pomocą pętli.

  • 🔢 Składnia: map() przyjmuje funkcję oraz jeden lub więcej obiektów iterowalnych i stosuje tę funkcję do każdego elementu.
  • 🔁 Wartość zwracana: map() zwraca leniwy obiekt mapy, więc opakowujemy go w list(), tuple() lub set(), aby wyświetlić wyniki.
  • 🧩 Obiekty iterowalne: Listy, krotki, zestawy, słowniki i ciągi znaków stanowią dane wejściowe dla map().
  • Lambda: Połączenie map() z lambdą pozwala uniknąć definiowania oddzielnej nazwanej funkcji dla prostych transformacji.
  • Wiele obiektów iterowalnych: Przekazanie kilku obiektów iterowalnych powoduje równoległe zastosowanie funkcji w stosunku do nich, koniecping najkrótszy.
  • 🤖 Pomoc AI: Asystenci AI, tacy jak GitHub Copilot, generują wywołania map(), a transformacje w stylu mapy przesyłają dane do systemów uczących się.

Python funkcja map().

Składnia

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

Parametry

Oto dwa ważne parametry:

  • funkcjonować: Obowiązkowa funkcja, która ma zostać przekazana do map(), a która zostanie zastosowana do wszystkich elementów dostępnych w iteratorze.
  • iterator: Obowiązkowy obiekt iterowalny. Może to być lista, krotka itp. Do funkcji map() można przekazać wiele obiektów iteracyjnych.

Wartość zwracana

Funkcja map() stosuje podaną funkcję do wszystkich elementów wewnątrz iteratora i zwraca iterowalny obiekt mapy, np. krotkę, listę itp.

Jak działa funkcja map()?

Funkcja map() przyjmuje dwa dane wejściowe: funkcję i obiekt iterowalny. Funkcja przekazana do map() jest zwykłą funkcją i iteruje po wszystkich wartościach obecnych w obiekcie iterowalnym.

Załóżmy na przykład, że masz listę liczb i chcesz obliczyć kwadrat każdej z nich.

Aby uzyskać wynik, potrzebujemy funkcji, która zwróci kwadrat podanej liczby. Funkcja wygląda następująco:

def square(n):
	return n*n

Lista elementów, dla których chcemy znaleźć kwadrat, jest następująca:

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

Teraz użyjmy wbudowanej funkcji map(), aby obliczyć kwadrat każdego elementu na liście my_list.

Ostateczny kod jest następujący:

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))

Wyjście:

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

Jak widać powyżej, wyjściem funkcji map() jest obiekt mapy wyświetlany na ekranie w postaci .

Będziesz musiał iterować dane wyjściowe z map() za pomocą pętli for lub metody list(), aby uzyskać wynik końcowy. Użyłem metody list() w kodzie, aby wyświetlić wartości z podanej listy.

Używając funkcji map(), możemy obliczyć kwadrat każdej liczby. Lista przekazana funkcji map() to [2,3,4,5,6,7,8,9], a używając funkcji square(), otrzymaliśmy wynik [4, 9, 16, 25, 36, 49, 64, 81].

Funkcja map() stosuje funkcję square() do wszystkich elementów listy. Na przykład, pobiera zmienną my_list i aktualizuje listę o kwadrat każdej liczby. Dane wyjściowe są przechowywane w zmiennej updated_list.

Używanie mapy() z Python wbudowane funkcje

Python Funkcja map() jest funkcją wbudowaną i może być również używana z innymi wbudowanymi funkcjami dostępnymi w PythonW tym przykładzie wykorzystamy Python Wbudowana funkcja round(), która zaokrągla podane wartości.

Przykład:

Lista, którą mam, to my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Potrzebuję zaokrąglonych wartości dla każdego elementu na liście, więc użyjemy funkcji round() jako funkcji 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))

Wyjście:

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

Funkcja round() jest stosowana do wszystkich elementów listy i zwraca listę ze wszystkimi zaokrąglonymi wartościami, jak pokazano na wyjściu.

Używanie map() z ciągiem znaków jako iteratora

Możemy także skorzystać z funkcji map() na ciągu znaków. W Python, ciąg zachowuje się jak tablica, więc możemy go łatwo używać wewnątrz map().

W tym przykładzie mamy funkcję myMapFunc(), która konwertuje podany ciąg znaków na wielkie litery. Funkcja myMapFunc() jest przekazywana do funkcji map(). Funkcja map() konwertuje podany ciąg znaków na wielkie litery, przekazując go do 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="")

Wyjście:

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

Używanie map() z listą Numbers

Aby pracować z listą w map(), weźmiemy listę liczb i pomnożymy każdą liczbę na liście przez 10.

Lista, której będziemy używać, to [2,3,4,5,6,7,8,9]. Funkcja myMapFunc() mnoży podaną liczbę przez 10. Funkcja jest przekazywana do funkcji map() wraz z listą.

Przykład:

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))

Wyjście:

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

Rezultatem jest pomnożenie każdej liczby na liście przez 10.

Używanie map() z Tuple

Krotka jest obiektem w Python którego elementy są rozdzielone przecinkami i ujęte w nawiasy okrągłe. W tym przykładzie weźmiemy krotkę z wartościami ciągu. Funkcja, której użyjemy, zamieni podane wartości na wielkie litery.

Przykład:

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))

Wyjście:

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

Wynikiem jest krotka zawierająca wszystkie wartości zamienione na wielkie litery.

Używanie map() ze słownikiem

A słownik w Python tworzony jest za pomocą nawiasów klamrowych ({}). Ponieważ słownik jest iteratorem, można go używać w funkcji map(). Użyjmy teraz słownika jako iteratora w funkcji map().

Poniższy przykład pokazuje działanie iteratora słownika wewnątrz 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))

Wyjście:

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

Używanie map() z Setem

Zestaw w Python to nieuporządkowana kolekcja elementów w nawiasach klamrowych ({}). Ponieważ set() jest również iteratorem, można go używać w funkcji map().

Oto przykład działania wykorzystujący zbiór jako iterator wewnątrz 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))

Wyjście:

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

Używanie mapy() z funkcją Lambda

In Python, wyrażenia lambda służą do konstruowania funkcji anonimowych. Będziesz musiał użyć słowa kluczowego lambda tak samo, jak używasz def do definiowania normalnych funkcji.

W tym przykładzie użyjemy funkcji lambda w map(). Funkcja lambda pomnoży każdą wartość na liście przez 10.

Przykład:

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))

Wyjście:

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

Korzystanie z wielu iteratorów wewnątrz funkcji map()

Przykład 1: Przekazanie dwóch iteratorów listy do map()

Do funkcji map() można wysłać jednocześnie więcej niż jeden iterator, np. listę, krotkę itp.

Na przykład, jeśli chcesz dodać dwie listy, możesz to samo zrobić za pomocą funkcji map(). Użyjemy dwóch list: my_list1 i my_list2.

W poniższym przykładzie pierwszy element listy my_list1 jest dodawany do pierwszego elementu listy my_list2. Funkcja myMapFunc() przyjmuje elementy listy my_list1 i my_list2 i zwraca ich sumę.

Oto przykład działania dodawania dwóch podanych list przy użyciu funkcji 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))

Wyjście:

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

Przykład 2: Przekazanie jednej krotki i iteratora listy do map()

Wykorzystamy iterator listy i krotki w funkcji map(). Funkcja przekazana do funkcji map(), myMapFunc(), pobierze elementy z listy i krotki. Elementy zostaną połączone znakiem podkreślenia (_). Poniżej przedstawiono działający przykład:

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))

Wyjście:

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

FAQ

Obie wykonują operację na każdym elemencie. List comprehension jest często bardziej czytelny i zwraca listę bezpośrednio, podczas gdy map() zwraca leniwy obiekt mapy i może działać szybciej, gdy ponownie wykorzysta się istniejącą funkcję nazwaną.

Nie. Funkcja map() nigdy nie zmienia oryginalnego obiektu iterowalnego. Odczytuje każdy element, stosuje funkcję i generuje nowy, leniwy obiekt mapy, pozostawiając nietkniętą listę źródłową, krotkę lub ciąg znaków.

In Python 3. Funkcja map() jest leniwa: zwraca obiekt mapy, który oblicza wartości tylko podczas iteracji. Oszczędza to pamięć przy dużych ilościach danych. Aby uzyskać wyniki, należy ją umieścić w funkcji list() lub wykonać pętlę.

Funkcja map() transformuje każdy element, filter() zachowuje tylko elementy, które przeszły test, a reduce() (z functools) łączy wszystkie elementy w jedną wartość. Łącznie obejmują one operacje transformacji, wybierania i agregacji.

Gdy iterowalne obiekty różnią się długością, funkcja map() zatrzymuje się na najkrótszym. Dodatkowe elementy w dłuższych iterowalnych obiektach są ignorowane, więc błąd nie jest zgłaszany, a wynik pasuje do najkrótszego iterowalnego obiektu.

Nie. Obiekt mapy to iterator, który wyczerpuje się po jednym przejściu. Po przejściu przez niego pętlą lub wywołaniu na nim metody list() jest pusty. Jeśli chcesz go ponownie wykorzystać, najpierw przekonwertuj go na listę.

W uczeniu maszynowym funkcja map() stosuje funkcje wstępnego przetwarzania w zbiorach danych, takie jak skalowanie liczb, tokenizacja tekstu czy transformacja cech przed trenowaniem. Zapewnia ona przejrzysty i funkcjonalny sposób uruchamiania tej samej operacji na wielu próbkach.

Tak. GitHub Copilot automatycznie uzupełnia wywołania map() odpowiednią funkcją i obiektami iterowalnymi, a narzędzia AI oparte na agentach mogą refaktoryzować pętle do wyrażeń map(), a następnie uruchamiać testy, aby potwierdzić, że zachowanie pozostało niezmienione.

Podsumuj ten post następująco: