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

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