Co to są funkcje Lambda i jak z nich korzystać?



Poznaj funkcje lambda w języku Python wraz z różnicą między funkcjami normalnymi a funkcjami lambda oraz dowiedz się, jak można ich używać w filtrach (), map (), redukuj ().

Nazwa jest konwencją używaną w odniesieniu do lub zwracania się do dowolnego podmiotu. Prawie wszystko wokół nas ma nazwę. Świat programowania również idzie zgodnie z tym. Ale czy trzeba nazwać wszystko? A może możesz mieć coś, co jest po prostu „anonimowe”? Odpowiedź brzmi tak. ' udostępnia funkcje Lambda, znane również jako funkcje anonimowe, które w rzeczywistości są bezimienne. Więc przejdźmy dalej, aby dowiedzieć się więcej o tych „anonimowych tajemnicach” Pythona, w następującej kolejności.

Więc zacznijmy :)





Dlaczego warto korzystać z funkcji Lambda w Pythonie?


Główny cel funkcji anonimowych pojawia się, gdy potrzebujesz jakiejś funkcji tylko raz. Można je tworzyć wszędzie tam, gdzie są potrzebne. Z tego powodu Python Lambda Functions są również nazywane funkcjami jednorazowego użytku, które są używane wraz z innymi predefiniowanymi funkcjami, takimi jak filter (), map () itp. Te funkcje pomagają zmniejszyć liczbę wierszy kodu w porównaniu z normalna .

Aby to udowodnić, przejdźmy dalej i poznajmy funkcje Lambda w języku Python.



Co to są funkcje Lambda w Pythonie?


Funkcje Python Lambda to funkcje, które nie mają żadnej nazwy. Są również znane jako funkcje anonimowe lub bezimienne. Słowo „lambda” nie jest nazwą, ale słowem kluczowym. To słowo kluczowe określa, że ​​następująca po nim funkcja jest anonimowa.

Teraz, gdy już wiesz, do czego odnoszą się te anonimowe funkcje, przejdźmy dalej, aby zobaczyć, jak piszesz te funkcje Lambda w Pythonie.

Jak pisać funkcje Lambda w Pythonie?

Funkcja Lambda jest tworzona za pomocą operatora lambda, a jej składnia jest następująca:



SKŁADNIA:

argumenty lambda: wyrażenie

Pyton funkcja lambda może mieć dowolną liczbę argumentów, ale wystarczy jedno wyrażenie. Dane wejściowe lub argumenty mogą zaczynać się od 0 i sięgać do dowolnego limitu. Podobnie jak w przypadku innych funkcji, funkcje lambda bez danych wejściowych są w porządku. Dlatego możesz mieć funkcje lambda w dowolnym z następujących formatów:

PRZYKŁAD:

lambda: „Określ cel”

Tutaj funkcja lambda nie przyjmuje żadnych argumentów.

PRZYKŁAD:

lambda ajeden: „Określ użycie plikujeden'

Tutaj lambda przyjmuje jedno wejście, którym jestjeden.

użycie iteratora w java

Podobnie możesz mieć lambda ajeden, do2, do3..don.

Spójrzmy na kilka przykładów, aby to zademonstrować:

PRZYKŁAD 1:

a = lambda x: x * x print (a (3))

WYNIK: 9

PRZYKŁAD 2:

a = lambda x, y: x * y print (a (3,7))

WYNIK: dwadzieścia jeden

Jak widać, podałem tutaj dwa przykłady. Pierwszy przykład wykorzystuje funkcję lambda z tylko jednym wyrażeniem, podczas gdy drugi przykład ma przekazane do niej dwa argumenty. Zwróć uwagę, że obie funkcje mają jedno wyrażenie, po którym następują argumenty. Dlatego nie można używać funkcji lambda, jeśli potrzebujesz wyrażeń wielowierszowych.

Z drugiej strony, normalne funkcje Pythona mogą przyjmować dowolną liczbę instrukcji w swoich definicjach funkcji.

W jaki sposób funkcje anonimowe zmniejszają rozmiar kodu?

Zanim porównamy ilość wymaganego kodu, najpierw zapiszmy składnię i porównaj go z opisanymi wcześniej funkcjami lambda.

Każda normalna funkcja w Pythonie jest definiowana przy użyciu pliku pok słowo kluczowe w następujący sposób:

SKŁADNIA:

def nazwa_funkcji (parametry):
sprawozdania)

Jak widać, ilość kodu wymagana dla funkcji lambda jest znacznie mniejsza niż w przypadku normalnych funkcji.

Przepiszmy teraz przykład, który wzięliśmy wcześniej, używając normalnych funkcji.

PRZYKŁAD:

def my_func (x): return x * x print (my_func (3))

WYNIK: 9

Jak widać, w powyższym przykładzie potrzebujemy instrukcji return wewnątrz funkcji my_func, aby obliczyć wartość kwadratu 3. W przeciwieństwie do tego funkcja lambda nie korzysta z tej instrukcji return, ale z treści funkcji anonimowej jest zapisany w tym samym wierszu, co sama funkcja, po symbolu dwukropka. Dlatego rozmiar funkcji jest mniejszy niż rozmiar my_func.

Jednak funkcje lambda w powyższych przykładach są wywoływane przy użyciu innych funkcji za. Dzieje się tak, ponieważ te funkcje są bezimienne i dlatego wymagają jakiejś nazwy do wywołania. Ale ten fakt może wydawać się mylący, dlaczego należy używać takich bezimiennych funkcji, skoro trzeba faktycznie przypisać inną nazwę, aby je wywołać? I oczywiście, po przypisaniu nazwy a do mojej funkcji, nie pozostaje ona już bezimienna! Dobrze?

To uzasadnione pytanie, ale chodzi o to, że nie jest to właściwy sposób korzystania z tych anonimowych funkcji.

Z funkcji anonimowych najlepiej korzystać w innych funkcje wyższego rzędu które albo używają jakiejś funkcji jako argumentu, albo zwracają funkcję jako wyjście. Aby to zademonstrować, przejdźmy teraz do następnego tematu.

Funkcje Python Lambda w ramach funkcji zdefiniowanych przez użytkownika:

Jak wspomniano powyżej, funkcje lambda są używane w innych funkcjach, aby zaznaczyć największą przewagę.

Poniższy przykład składa się z new_func, która jest normalną funkcją Pythona, która przyjmuje jeden argument x. Argument ten jest następnie dodawany do nieznanego argumentu y, który jest dostarczany przez funkcję lambda.

PRZYKŁAD:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

WYNIK:

6
5
Jak widać, w powyższym przykładzie funkcja lambda, która jest obecna w new_func, jest wywoływana za każdym razem, gdy używamy new_func (). Za każdym razem możemy przekazać argumentom oddzielne wartości.

Teraz, kiedy już wiesz, jak używać funkcji anonimowych w funkcjach wyższego rzędu, przejdźmy teraz do przodu, aby zrozumieć jedno z najpopularniejszych zastosowań, które obejmuje metody filter (), map () i redukuj ().

jak wyjść z metody w java

Jak korzystać z funkcji anonimowych w filtrach (), map () i redukuj ():

Funkcje anonimowe w ramach filtr():

filtr():

Metoda filter () służy do filtrowania podanych iterable (listy, zbiory itp.) Za pomocą innej funkcji, przekazanej jako argument, w celu sprawdzenia, czy wszystkie elementy są prawdziwe lub fałszywe.

Składnia tej funkcji to:

SKŁADNIA:

filtr (funkcja, iterowalna)

Rozważmy teraz następujący przykład:

PRZYKŁAD:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

WYNIK: [6]

Tutaj my_list jest listą iterowalnych wartości, które są przekazywane do funkcji filtrującej. Ta funkcja używa funkcji lambda do sprawdzenia, czy na liście są jakieś wartości, które po podzieleniu przez 3. będą równe 2. Wynik składa się z listy spełniającej wyrażenie obecne w funkcji anonimowej.

mapa():

Funkcja map () w Pythonie jest funkcją, która stosuje daną funkcję do wszystkich elementów iteracyjnych i zwraca nową listę.

SKŁADNIA:

map (funkcja, iterowalna)

Weźmy przykład, aby zademonstrować użycie funkcji lambda w funkcji map ():

Jaka jest różnica między klasą abstrakcyjną a interfejsem

PRZYKŁAD:

my_list = [2,3,4,5,6,7,8] new_list = list (map (lambda a: (a / 3! = 2), li)) print (new_list)

WYNIK:

[True, True, True, True, False, True, True]

Powyższe dane wyjściowe pokazują, że ilekroć wartość iterable nie jest równa 2 po podzieleniu przez 3, zwracany wynik powinien być True. W związku z tym dla wszystkich elementów w my_list zwraca wartość true, z wyjątkiem wartości 6, gdy warunek zmieni się na False.

zmniejszyć():

Funkcja redukuj () służy do zastosowania innej funkcji do listy elementów, które są do niej przekazywane jako parametr, a na koniec zwraca pojedynczą wartość.

Składnia tej funkcji jest następująca:

SKŁADNIA:

redukcja (funkcja, sekwencja)

PRZYKŁAD:

z functools import redukuj redukuj (lambda a, b: a + b, [23,21,45,98])

Powyższy przykład przedstawiono na poniższym obrazku:

redukuj-python lambda-edureka

WYNIK: 187

Wynik jasno pokazuje, że wszystkie elementy listy są dodawane w sposób ciągły aby zwrócić wynik końcowy.

W ten sposób dochodzimy do końca artykułu o „Python Lambda”. Mam nadzieję, że wszystko, co zostało Ci udostępnione, jest dla Ciebie jasne. Upewnij się, że ćwiczysz jak najwięcej i cofnij swoje doświadczenie.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego bloga „Python Lambda”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.

Aby uzyskać dogłębną wiedzę na temat języka Python i jego różnych aplikacji, możesz zarejestrować się na żywo z całodobowym wsparciem i dożywotnim dostępem.