Funkcje lambda w Pythonie są funkcjami anonimowymi, oznacza to, że funkcja nie ma nazwy. Jak już wiemy, def słowo kluczowe służy do definiowania normalnej funkcji w Pythonie. Podobnie, lambda Słowo kluczowe służy do definiowania anonimowej funkcji w Pyton .
Składnia funkcji Lambda w Pythonie
Składnia: argumenty lambda: wyrażenie
- Ta funkcja może mieć dowolną liczbę argumentów, ale tylko jedno wyrażenie, które jest oceniane i zwracane.
- Można swobodnie używać funkcji lambda wszędzie tam, gdzie wymagane są obiekty funkcyjne.
- Należy pamiętać, że funkcje lambda są składniowo ograniczone do pojedynczego wyrażenia.
- Ma różne zastosowania w poszczególnych dziedzinach programowania, oprócz innych typów wyrażeń w funkcjach.
Przykład funkcji Lambda w Pythonie
W przykładzie zdefiniowaliśmy funkcję lambda ( górny ), aby przekonwertować ciąg znaków na wielkie litery, używając górny() .
Ten kod definiuje funkcję lambda o nazwie upper>
który przyjmuje ciąg znaków jako argument i konwertuje go na wielkie litery za pomocą metody upper()>
metoda. Następnie stosuje tę funkcję lambda do ciągu „techcodeview.com” i drukuje wynik
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
>
>
Wyjście:
GEEKSFORGEEKS>
Zastosowanie funkcji Lambda w Pythonie
Zobaczmy kilka praktycznych zastosowań funkcji lambda w Pythonie.
Sprawdzanie stanu za pomocą funkcji lambda w języku Python
Tutaj „format_numeryczny” wywołuje funkcję lambda, a liczba jest przekazywana jako parametr do wykonywania operacji.
Python3
format_numeric> => lambda> num: f> '{num:e}'> if> isinstance> (num,> int> )> else> f> '{num:,.2f}'> print> (> 'Int formatting:'> , format_numeric(> 1000000> ))> print> (> 'float formatting:'> , format_numeric(> 999999.789541235> ))> |
>
>
Wyjście:
Int formatting: 1.000000e+06 float formatting: 999,999.79>
Różnica między funkcjami Lambda a funkcją zdefiniowaną def
Kod definiuje funkcję kostki przy użyciu zarówno ' def'>
słowo kluczowe i funkcja lambda. Oblicza sześcian danej liczby (w tym przypadku 5) przy użyciu obu podejść i drukuje wyniki. Wynik wynosi 125 dla obu ' def'>
i funkcje lambda, pokazując, że osiągają te same obliczenia sześcianu.
Python3
def> cube(y):> > return> y> *> y> *> y> lambda_cube> => lambda> y: y> *> y> *> y> print> (> 'Using function defined with `def` keyword, cube:'> , cube(> 5> ))> print> (> 'Using lambda function, cube:'> , lambda_cube(> 5> ))> |
>
>
Wyjście:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>
Jak widać na powyższym przykładzie, zarówno sześcian() funkcja i lambda_cube() funkcja zachowuje się tak samo i zgodnie z przeznaczeniem. Przeanalizujmy powyższy przykład nieco szerzej:
Z funkcją lambda | Bez funkcji lambda |
---|---|
Obsługuje czasami instrukcje jednowierszowe, które zwracają pewną wartość. | Obsługuje dowolną liczbę linii wewnątrz bloku funkcyjnego |
Dobry do wykonywania krótkich operacji/manipulacji danymi. | Dobre w każdym przypadku, który wymaga wielu linii kodu. |
Korzystanie z funkcji lambda może czasami zmniejszyć czytelność kodu. | Dla większej czytelności możemy zastosować komentarze i opisy funkcji. |
Praktyczne zastosowania funkcji lambda w Pythonie
Funkcja Lambda w Pythonie ze zrozumieniem listy
W każdej iteracji wewnątrz zrozumienie listy , tworzymy nową funkcję lambda z domyślnym argumentem x (gdzie x jest bieżącym elementem iteracji). Później w pętli for wywołujemy ten sam obiekt funkcji, używając domyślnego argumentu przedmiot() i uzyskaj żądaną wartość. Zatem, is_even_list przechowuje listę obiektów funkcji lambda.
Python3
is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())> |
>
>
Wyjście:
10 20 30 40>
Funkcja Lambda w Pythonie z if-else
Tutaj używamy Maks funkcja lambda, aby znaleźć maksimum dwóch liczb całkowitych.
Python3
Max> => lambda> a, b : a> if> (a>b)> else> b> print> (> Max> (> 1> ,> 2> ))> |
>
>
Wyjście:
2>
Python Lambda z wieloma instrukcjami
Funkcje lambda nie pozwalają na wiele instrukcji, możemy jednak utworzyć dwie funkcje lambda, a następnie wywołać drugą funkcję lambda jako parametr pierwszej funkcji. Spróbujmy znaleźć drugi element maksymalny za pomocą lambdy.
Kod definiuje listę podlist tzw ' List'>
. Używa funkcji lambda do sortowania każdej podlisty i znajdowania drugiego co do wielkości elementu na każdej podliście. Wynikiem jest lista drugich co do wielkości elementów, która jest następnie drukowana. Dane wyjściowe wyświetlają drugi co do wielkości element z każdej podlisty na oryginalnej liście.
Python3
List> => [[> 2> ,> 3> ,> 4> ],[> 1> ,> 4> ,> 16> ,> 64> ],[> 3> ,> 6> ,> 9> ,> 12> ]]> sortList> => lambda> x: (> sorted> (i)> for> i> in> x)> secondLargest> => lambda> x, f : [y[> len> (y)> -> 2> ]> for> y> in> f(x)]> res> => secondLargest(> List> , sortList)> print> (res)> |
>
>
Wyjście:
[3, 16, 9]>
Funkcje Lambda mogą być używane razem z funkcjami wbudowanymi, takimi jak filtr() , mapa() I zmniejszyć() .
Używanie funkcji lambda() z filter()
Funkcja filter() w Pythonie przyjmuje jako argumenty funkcję i listę. Oferuje to elegancki sposób odfiltrowania wszystkich elementów sekwencji, dla których funkcja zwraca wartość True. Oto mały program, który zwraca liczby nieparzyste z listy wejściowej:
Odfiltruj wszystkie liczby nieparzyste za pomocą filter() i funkcji lambda
Tutaj lambda x: (x % 2 != 0) zwraca wartość True lub False, jeśli x nie jest parzyste. Ponieważ filter() przechowuje tylko elementy tam, gdzie produkuje PRAWDA , w ten sposób usuwa wszystkie wygenerowane liczby nieparzyste FAŁSZ .
Python3
li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> filter> (> lambda> x: (x> %> 2> !> => 0> ), li))> print> (final_list)> |
>
>
Wyjście:
[5, 7, 97, 77, 23, 73, 61]>
Filtruj wszystkie osoby w wieku powyżej 18 lat za pomocą funkcji lambda i filter().
Kod filtruje listę grup wiekowych i wyodrębnia wiek dorosłych (powyżej 18 lat) za pomocą funkcji lambda i metody ' filter'>
funkcjonować. Następnie drukuje listę grup wiekowych osób dorosłych. Dane wyjściowe wyświetlają wiek osób, które ukończyły 18 lat.
Python3
ages> => [> 13> ,> 90> ,> 17> ,> 59> ,> 21> ,> 60> ,> 5> ]> adults> => list> (> filter> (> lambda> age: age>> 18> , ages))> print> (adults)> |
polimorfizm Javy
>
>
Wyjście:
[90, 59, 21, 60]>
Używanie funkcji lambda() z map()
Funkcja map() w Pythonie przyjmuje jako argument funkcję i listę. Funkcja jest wywoływana z funkcją lambda i listą, po czym zwracana jest nowa lista zawierająca wszystkie elementy zmodyfikowane za pomocą lambda zwrócone przez tę funkcję dla każdego elementu. Przykład:
Pomnóż wszystkie elementy listy przez 2, używając funkcji lambda i map().
Kod podwaja każdy element na liście za pomocą funkcji lambda i metody ' map'>
funkcjonować. Następnie drukuje nową listę ze zdublowanymi elementami. Dane wyjściowe wyświetlają każdy element z oryginalnej listy pomnożony przez 2.
Python3
li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> map> (> lambda> x: x> *> 2> , li))> print> (final_list)> |
>
>
Wyjście:
[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>
Przekształć wszystkie elementy listy na wielkie litery za pomocą funkcji lambda i map().
Kod konwertuje listę nazw zwierząt na wielkie litery za pomocą funkcji lambda i metody ' map'>
funkcjonować. Następnie drukuje listę z nazwami zwierząt zapisanymi wielkimi literami. Dane wyjściowe wyświetlają nazwy zwierząt wielkimi literami.
Python3
animals> => [> 'dog'> ,> 'cat'> ,> 'parrot'> ,> 'rabbit'> ]> uppered_animals> => list> (> map> (> lambda> animal: animal.upper(), animals))> print> (uppered_animals)> |
>
>
Wyjście:
['DOG', 'CAT', 'PARROT', 'RABBIT']>
Używanie funkcji lambda() z funkcją redukcji()
The zmniejszyć() Funkcja w Pythonie przyjmuje jako argument funkcję i listę. Funkcja jest wywoływana za pomocą funkcji lambda i zwracany jest iterowalny i nowy, zredukowany wynik. Wykonuje powtarzalną operację na parach iterowalnych. Funkcja redukcji() należy do narzędzia funkcyjne moduł.
Suma wszystkich elementów na liście przy użyciu funkcji lambda i funkcji redukcji().
Kod oblicza sumę elementów na liście za pomocą ' reduce'>
funkcja z ' functools'>
moduł. Importuje ' reduce'>
, definiuje listę, stosuje funkcję lambda, która dodaje dwa elementy na raz i wypisuje sumę wszystkich elementów na liście. Dane wyjściowe wyświetlają obliczoną sumę.
Python3
from> functools> import> reduce> li> => [> 5> ,> 8> ,> 10> ,> 20> ,> 50> ,> 100> ]> sum> => reduce> ((> lambda> x, y: x> +> y), li)> print> (> sum> )> |
>
>
Wyjście:
193>
Tutaj wyniki dwóch poprzednich elementów są dodawane do następnego elementu i trwa to aż do końca listy, np. ((((5+8)+10)+20)+50)+100).
Znajdź maksymalny element na liście za pomocą funkcji lambda i funkcji redukcji().
W kodzie zastosowano ' functools'>
moduł, aby znaleźć maksymalny element na liście ( ' lis'>
) poprzez zastosowanie ' reduce'>
funkcję i funkcję lambda. Następnie wypisuje maksymalny element, czyli w tym przypadku 6.
Python3
import> functools> lis> => [> 1> ,> 3> ,> 5> ,> 6> ,> 2> , ]> print> (> 'The maximum element of the list is : '> , end> => '')> print> (functools.> reduce> (> lambda> a, b: a> if> a>b> else> b, lis))> |
>
>
Wyjście:
The maximum element of the list is : 6>