logo

Funkcje lambda w Pythonie

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>