logo

Funkce Python Lambda

Funkce Python Lambda jsou anonymní funkce znamená, že funkce je bez názvu. Jak již víme, def klíčové slovo se používá k definování normální funkce v Pythonu. Podobně, lambda klíčové slovo se používá k definování anonymní funkce v Krajta .

Syntaxe funkce Python Lambda

Syntax: argumenty lambda: výraz



  • Tato funkce může mít libovolný počet argumentů, ale pouze jeden výraz, který je vyhodnocen a vrácen.
  • Je možné volně používat funkce lambda všude tam, kde jsou vyžadovány funkční objekty.
  • Musíte mít na paměti, že funkce lambda jsou syntakticky omezeny na jeden výraz.
  • Kromě jiných typů výrazů ve funkcích má různá použití v jednotlivých oblastech programování.

Příklad funkce pythonské lambda

V příkladu jsme definovali funkci lambda( horní ) pro převod řetězce na velká písmena pomocí horní() .

Tento kód definuje funkci lambda s názvem upper> který vezme řetězec jako svůj argument a převede jej na velká písmena pomocí upper()> metoda. Poté aplikuje tuto lambda funkci na řetězec ‚techcodeview.com‘ a vytiskne výsledek

Python3








str1>=> 'techcodeview.com'> upper>=> lambda> string: string.upper()> print>(upper(str1))>

>

>

Výstup:

GEEKSFORGEEKS>

Použití funkce Lambda v Pythonu

Podívejme se na některá praktická použití funkce lambda v Pythonu.

Kontrola stavu pomocí funkce lambda Pythonu

Tady, ‘format_numric’ volá funkci lambda a číslo je předáno jako parametr pro provádění operací.

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

>

>

Výstup:

Int formatting: 1.000000e+06 float formatting: 999,999.79>

Rozdíl mezi lambda funkcemi a def definovanou funkcí

Kód definuje funkci kostky pomocí obou ' def'> klíčové slovo a funkce lambda. Vypočítá třetí mocninu daného čísla (v tomto případě 5) pomocí obou přístupů a výsledky vytiskne. Výstup je 125 pro oba ' def'> a lambda funkce, což dokazuje, že dosahují stejného výpočtu krychle.

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

>

>

Výstup:

Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>

Jak můžeme vidět na výše uvedeném příkladu, oba krychle() funkce a lambda_cube() funkce se chovají stejně a jak bylo zamýšleno. Pojďme analyzovat výše uvedený příklad trochu více:

S funkcí lambda

Bez funkce lambda

Někdy podporuje jednořádkové příkazy, které vracejí nějakou hodnotu. Podporuje libovolný počet řádků uvnitř funkčního bloku
Dobré pro provádění krátkých operací/manipulací s daty. Dobré pro všechny případy, které vyžadují více řádků kódu.
Použití funkce lambda může někdy snížit čitelnost kódu. Pro snadnou čitelnost můžeme použít komentáře a popisy funkcí.

Praktické využití funkce lambda v Pythonu

Funkce Python Lambda s porozuměním seznamu

Při každé iteraci uvnitř porozumění seznamu , vytváříme novou funkci lambda s výchozím argumentem x (kde x je aktuální položka v iteraci). Později, uvnitř cyklu for, voláme stejný objekt funkce s výchozím argumentem using položka() a získat požadovanou hodnotu. Tím pádem, is_even_list ukládá seznam objektů funkce lambda.

Python3




is_even_list>=> [>lambda> arg>=>x: arg>*> 10> for> x>in> range>(>1>,>5>)]> for> item>in> is_even_list:> >print>(item())>

>

>

Výstup:

10 20 30 40>

Funkce Python Lambda s if-else

Zde používáme Max lambda funkce k nalezení maximálně dvou celých čísel.

Python3




Max> => lambda> a, b : a>if>(a>b)>else> b> print>(>Max>(>1>,>2>))>

>

>

Výstup:

2>

Python Lambda s více příkazy

Lambda funkce neumožňují více příkazů, nicméně můžeme vytvořit dvě lambda funkce a pak volat druhou lambda funkci jako parametr k první funkci. Zkusme najít druhý maximální prvek pomocí lambda.

Kód definuje seznam volaných podseznamů ' List'> . Používá lambda funkce k třídění každého podseznamu a nalezení druhého největšího prvku v každém podseznamu. Výsledkem je seznam druhých největších prvků, který je následně vytištěn. Výstup zobrazí druhý největší prvek z každého dílčího seznamu v původním seznamu.

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

>

>

Výstup:

[3, 16, 9]>

Funkce lambda lze použít spolu s vestavěnými funkcemi, jako je filtr() , mapa() a snížit() .

Použití funkce lambda() s filtrem()

Funkce filter() v Pythonu přebírá funkci a seznam jako argumenty. To nabízí elegantní způsob, jak odfiltrovat všechny prvky sekvence sekvence, pro kterou funkce vrací True. Zde je malý program, který vrací lichá čísla ze seznamu vstupů:

Odfiltrujte všechna lichá čísla pomocí funkce filter() a lambda

Zde lambda x: (x % 2 != 0) vrátí hodnotu True nebo False, pokud x není sudé. Protože filter() uchovává prvky pouze tam, kde produkuje Skutečný , tak odstraní všechna vygenerovaná lichá čísla Nepravdivé .

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

>

>

Výstup:

[5, 7, 97, 77, 23, 73, 61]>

Filtrujte všechny osoby starší 18 let pomocí funkce lambda a filter().

Kód filtruje seznam věků a extrahuje věk dospělých (věk nad 18 let) pomocí funkce lambda a ' filter'> funkce. Poté vytiskne seznam dospělých věků. Výstup zobrazuje věk jednotlivců, kteří jsou starší 18 let.

Python3




ages>=> [>13>,>90>,>17>,>59>,>21>,>60>,>5>]> adults>=> list>(>filter>(>lambda> age: age>>18>, ages))> print>(adults)>

binární strom v Javě
>

>

Výstup:

[90, 59, 21, 60]>

Použití funkce lambda() s map()

Funkce map() v Pythonu přebírá funkci a seznam jako argument. Funkce je volána s funkcí lambda a seznamem a je vrácen nový seznam, který obsahuje všechny položky upravené lambda vrácené touto funkcí pro každou položku. Příklad:

Vynásobte všechny prvky seznamu 2 pomocí funkce lambda a map().

Kód zdvojnásobí každý prvek v seznamu pomocí funkce lambda a ' map'> funkce. Poté vytiskne nový seznam se zdvojenými prvky. Výstup zobrazí každý prvek z původního seznamu vynásobený 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)>

>

>

Výstup:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>

Transformujte všechny prvky seznamu na velká písmena pomocí funkce lambda a map().

Kód převede seznam jmen zvířat na velká písmena pomocí funkce lambda a ' map'> funkce. Poté vytiskne seznam se jmény zvířat velkými písmeny. Výstup zobrazuje jména zvířat velkými písmeny.

Python3




animals>=> [>'dog'>,>'cat'>,>'parrot'>,>'rabbit'>]> uppered_animals>=> list>(>map>(>lambda> animal: animal.upper(), animals))> print>(uppered_animals)>

>

>

Výstup:

['DOG', 'CAT', 'PARROT', 'RABBIT']>

Použití funkce lambda() s redukcí()

The snížit() funkce v Pythonu bere funkci a seznam jako argument. Funkce je volána s funkcí lambda a je vrácen iterovatelný a nový redukovaný výsledek. Tím se provede opakovaná operace nad páry iterovatelných. Funkce redukovat() patří do functools modul.

Součet všech prvků v seznamu pomocí funkce lambda a reduction().

Kód vypočítá součet prvků v seznamu pomocí ' reduce'> funkce z ' functools'> modul. Dováží se ' reduce'> , definuje seznam, aplikuje funkci lambda, která přidává dva prvky najednou, a vytiskne součet všech prvků v seznamu. Výstup zobrazí vypočítaný součet.

Python3




from> functools>import> reduce> li>=> [>5>,>8>,>10>,>20>,>50>,>100>]> sum> => reduce>((>lambda> x, y: x>+> y), li)> print>(>sum>)>

>

>

Výstup:

193>

Zde jsou výsledky předchozích dvou prvků přidány k dalšímu prvku a to pokračuje až do konce seznamu jako ((((5+8)+10)+20)+50)+100).

Najděte maximální prvek v seznamu pomocí funkce lambda a reduction().

Kód používá ' functools'> modul k nalezení maximálního počtu prvků v seznamu ( ' lis'> ) zaměstnáváním ' reduce'> funkce a funkce lambda. Poté vytiskne maximální prvek, což je v tomto případě 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))>

>

>

Výstup:

The maximum element of the list is : 6>