Przewodnik dla początkujących do zrozumienia funkcji lambda Pythona

Przewodnik dla początkujących do zrozumienia funkcji lambda Pythona

Lambdy w Pythonie są jedną z najbardziej użytecznych, ważnych i interesujących funkcji, o których warto wiedzieć. Niestety, łatwo je też źle zrozumieć i pomylić.





W tym artykule wyjaśnimy wszystko, co musisz wiedzieć o tych tajemniczych funkcjach, jak z nich korzystać i dlaczego są przydatne.





Zanim zagłębisz się w te praktyczne przykłady, możesz zechcieć skonfigurować wirtualne środowisko Pythona. Jeśli nawet nie chcesz tego robić, powinieneś przynajmniej spróbować tych przykładów z interaktywną powłoką Pythona online .





Co to jest lambda w Pythonie?

Lambda to po prostu sposób na zdefiniowanie funkcji w Pythonie. Są one czasami nazywane „operatorami lambda” lub „funkcjami lambda”.

Jeśli używałeś wcześniej Pythona, prawdopodobnie zdefiniowałeś swoje funkcje za pomocą definitywnie słowo kluczowe i jak dotąd działało dobrze. Dlaczego więc istnieje inny sposób na zrobienie tego samego?



Różnica polega na tym, że funkcje lambda są anonimowe. Oznacza to, że są to funkcje, których nie trzeba nazywać. Służą do tworzenia małych, jednorazowych funkcji w przypadkach, gdy „prawdziwa” funkcja byłaby zbyt duża i nieporęczna.

Lambdy zwracają obiekt funkcji, który można przypisać do zmiennej. Lambdy mogą mieć dowolną liczbę argumentów, ale mogą mieć tylko jedno wyrażenie. Nie możesz wywoływać innych funkcji wewnątrz lambd.





Najczęstszym zastosowaniem funkcji lambda jest kod, który wymaga prostej jednowierszowej funkcji, gdzie napisanie pełnej normalnej funkcji byłoby przesadą. Zostało to omówione bardziej szczegółowo poniżej, w części „A co z mapowaniem, filtrowaniem i redukcją?”.

Jak używać lambd w Pythonie

Zanim przyjrzymy się funkcji lambda, spójrzmy na super podstawową funkcję zdefiniowaną w „tradycyjny” sposób:





def add_five(number):
return number + 5

print(add_five(number=4))

Ta funkcja jest bardzo prosta, ale służy do ilustrowania lambd. Twoja może być bardziej złożona. Ta funkcja dodaje pięć do dowolnej liczby przekazanej do niej przez numer parametr.

Oto jak wygląda funkcja lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Zamiast używać definitywnie , słowo lambda jest używany. Nie są wymagane żadne nawiasy, ale dowolne słowa następujące po lambda słowa kluczowe są tworzone jako parametry. Dwukropek służy do oddzielenia parametrów i wyrażenia. W tym przypadku wyrażenie to liczba + 5 .

Nie ma potrzeby używania powrót słowo kluczowe --- lambda robi to automatycznie.

Oto jak utworzyć funkcję lambda z dwoma argumentami:

dlaczego moje hbo max nie działa?
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Jeśli nadal nie masz pewności co do znaczenia lambd, następna sekcja zagłębi się i pomoże ci zobaczyć światło.

Lambdy Pythona z mapowaniem, filtrowaniem i redukcją

Podstawowa biblioteka Pythona ma trzy metody zwane mapa , zmniejszyć , oraz filtr . Te metody są prawdopodobnie najlepszymi powodami używania funkcji lambda.

ten mapa funkcja oczekuje dwóch argumentów: funkcji i listy. Pobiera tę funkcję i stosuje ją do każdego elementu na liście, zwracając listę zmodyfikowanych elementów jako obiekt mapy. ten lista Funkcja służy do ponownego przekształcenia wynikowego obiektu mapy z powrotem w listę.

Oto jak używać mapy bez lambdy:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Ta funkcja mapy jest bardzo przydatna, ale mogłaby być lepsza. ten dodaj_pięć funkcja jest przekazywana jako argument, ale co, jeśli nie chcesz tworzyć funkcji za każdym razem, gdy używasz map? Zamiast tego możesz użyć lambdy!

Oto jak wygląda ten sam kod, tylko z funkcją zastąpioną lambdą:

jak uzyskać osobisty filtr na snapchat
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Jak widać, całość dodaj_pięć funkcja nie jest już wymagana. Zamiast tego, funkcja lambda służy do utrzymania porządku.

Z filtr funkcja, proces jest bardzo podobny. Filtr pobiera funkcję i stosuje ją do każdego elementu na liście i tworzy nową listę zawierającą tylko te elementy, które spowodowały, że funkcja zwróciła True.

Po pierwsze bez lambd:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Nie ma nic złego w tym kodzie, ale robi się trochę za długi. Zobaczmy, ile linii może usunąć lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Funkcja lambda zastąpiła potrzebę całości większa_niż_dziesięć_funkcji ! I zrobiono to w pięciu prostych słowach. Właśnie dlatego lambdy są potężne: redukują bałagan przy prostych zadaniach.

Na koniec spójrzmy na zmniejszyć . Reduce to kolejna fajna funkcja Pythona. Stosuje obliczenia kroczące do wszystkich pozycji na liście. Możesz użyć tego, aby zsumować sumę lub pomnożyć wszystkie liczby razem:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Ten przykład musi zostać zaimportowany zmniejszyć od functools moduł, ale nie martw się, moduł functools jest częścią podstawowej biblioteki Pythona.

Historia jest bardzo podobna z lambdą, nie ma potrzeby używania funkcji:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Rzeczy, na które należy uważać w przypadku lambd Pythona

Te przykłady pokazują, jak łatwe są funkcje lambda, wraz z mapowaniem, filtrowaniem i redukcją, z podstawowej biblioteki Pythona. Mimo to istnieje kilka zastosowań, w których funkcje lambda nie pomagają.

Jeśli robisz coś więcej niż podstawowe zadanie lub chcesz wywołać inne metody, użyj normalnej funkcji. Lambdy świetnie nadają się do jednorazowych, anonimowych funkcji, ale muszą mieć tylko jedno wyrażenie. Jeśli lambda zaczyna wyglądać jak wyrażenie regularne, prawdopodobnie nadszedł czas na refaktoryzację w dedykowaną metodę.

Aby uzyskać więcej wskazówek, sprawdź nasze przewodnik po programowaniu obiektowym w Pythonie i sprawdź nasz przewodnik FAQ dla początkujących Pythona.

Udział Udział Ćwierkać E-mail 3 sposoby sprawdzenia, czy wiadomość e-mail jest prawdziwa czy fałszywa

Jeśli otrzymałeś wiadomość e-mail, która wygląda nieco podejrzanie, zawsze najlepiej sprawdzić jej autentyczność. Oto trzy sposoby sprawdzenia, czy wiadomość e-mail jest prawdziwa.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Pyton
  • Poradniki kodowania
O autorze Joe Coburn(136 opublikowanych artykułów)

Joe jest absolwentem informatyki na Uniwersytecie w Lincoln w Wielkiej Brytanii. Jest profesjonalnym programistą, a kiedy nie lata dronami ani nie pisze muzyki, często można go spotkać wykonującego zdjęcia lub produkującego filmy.

Więcej od Joe Coburna

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować