Python-Lambda-Funktionen Sind anonyme Funktionen bedeutet, dass die Funktion keinen Namen hat. Wie wir bereits wissen def Das Schlüsselwort wird verwendet, um eine normale Funktion in Python zu definieren. Ebenso die Lambda Das Schlüsselwort wird verwendet, um eine anonyme Funktion in zu definieren Python .
Syntax der Python-Lambda-Funktion
Syntax: Lambda-Argumente: Ausdruck
- Diese Funktion kann eine beliebige Anzahl von Argumenten, aber nur einen Ausdruck haben, der ausgewertet und zurückgegeben wird.
- Man kann Lambda-Funktionen überall dort verwenden, wo Funktionsobjekte benötigt werden.
- Sie müssen sich darüber im Klaren sein, dass Lambda-Funktionen syntaktisch auf einen einzelnen Ausdruck beschränkt sind.
- Neben anderen Arten von Ausdrücken in Funktionen findet es in bestimmten Bereichen der Programmierung vielfältige Verwendungsmöglichkeiten.
Beispiel einer Python-Lambda-Funktion
Im Beispiel haben wir eine Lambda-Funktion definiert( Oberer, höher ), um eine Zeichenfolge mit in Großbuchstaben umzuwandeln Oberer, höher() .
Dieser Code definiert eine Lambda-Funktion mit dem Namen upper>
Das nimmt eine Zeichenfolge als Argument und wandelt sie mithilfe von in Großbuchstaben um upper()>
Methode. Anschließend wendet es diese Lambda-Funktion auf die Zeichenfolge „techcodeview.com“ an und gibt das Ergebnis aus
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
>
>
Ausgabe:
GEEKSFORGEEKS>
Verwendung der Lambda-Funktion in Python
Sehen wir uns einige praktische Anwendungen der Python-Lambda-Funktion an.
Zustandsprüfung mit der Python-Lambda-Funktion
Hier das „format_numric“ ruft die Lambda-Funktion auf und die Zahl wird als Parameter zum Ausführen von Operationen übergeben.
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> ))> |
>
>
Ausgabe:
Int formatting: 1.000000e+06 float formatting: 999,999.79>
Unterschied zwischen Lambda-Funktionen und def definierten Funktionen
Der Code definiert eine Cube-Funktion unter Verwendung von ' def'>
Schlüsselwort und eine Lambda-Funktion. Es berechnet die Potenz einer bestimmten Zahl (in diesem Fall 5) unter Verwendung beider Ansätze und druckt die Ergebnisse aus. Die Ausgabe beträgt 125 für beide ' def'>
und Lambda-Funktionen, was zeigt, dass sie die gleiche Würfelberechnung erreichen.
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> ))> |
>
>
Ausgabe:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>
Wie wir im obigen Beispiel sehen können, sind beide Würfel() Funktion und lambda_cube() Funktion verhält sich gleich und wie beabsichtigt. Lassen Sie uns das obige Beispiel etwas genauer analysieren:
Mit Lambda-Funktion | Ohne Lambda-Funktion |
---|---|
Unterstützt einzeilige Manchmal-Anweisungen, die einen Wert zurückgeben. | Unterstützt eine beliebige Anzahl von Zeilen innerhalb eines Funktionsblocks |
Gut für die Durchführung kurzer Operationen/Datenmanipulationen. | Gut für alle Fälle, die mehrere Codezeilen erfordern. |
Die Verwendung der Lambda-Funktion kann manchmal die Lesbarkeit des Codes beeinträchtigen. | Zur besseren Lesbarkeit können wir Kommentare und Funktionsbeschreibungen verwenden. |
Praktische Anwendungen der Python-Lambda-Funktion
Python-Lambda-Funktion mit Listenverständnis
Bei jeder Iteration innerhalb der Listenverständnis erstellen wir eine neue Lambda-Funktion mit dem Standardargument x (wobei x das aktuelle Element in der Iteration ist). Später rufen wir innerhalb der for-Schleife dasselbe Funktionsobjekt mit dem Standardargument using auf Artikel() und den gewünschten Wert erhalten. Daher, is_even_list speichert die Liste der Lambda-Funktionsobjekte.
Python3
is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())> |
>
>
Ausgabe:
10 20 30 40>
Python-Lambda-Funktion mit if-else
Hier verwenden wir die Max Lambda-Funktion, um das Maximum von zwei ganzen Zahlen zu finden.
Python3
Max> => lambda> a, b : a> if> (a>b)> else> b> print> (> Max> (> 1> ,> 2> ))> |
>
>
Ausgabe:
2>
Python Lambda mit mehreren Anweisungen
Lambda-Funktionen erlauben nicht mehrere Anweisungen, wir können jedoch zwei Lambda-Funktionen erstellen und dann die andere Lambda-Funktion als Parameter für die erste Funktion aufrufen. Versuchen wir, mit Lambda das zweite maximale Element zu finden.
Der Code definiert eine Liste aufgerufener Unterlisten ' List'>
. Es verwendet Lambda-Funktionen, um jede Unterliste zu sortieren und das zweitgrößte Element in jeder Unterliste zu finden. Das Ergebnis ist eine Liste der zweitgrößten Elemente, die dann gedruckt wird. Die Ausgabe zeigt das zweitgrößte Element aus jeder Unterliste in der Originalliste an.
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)> |
>
>
Ausgabe:
[3, 16, 9]>
Lambda-Funktionen können zusammen mit integrierten Funktionen wie verwendet werden Filter() , Karte() Und reduzieren() .
Verwenden der Funktion lambda() mit filter()
Die Funktion filter() in Python akzeptiert eine Funktion und eine Liste als Argumente. Dies bietet eine elegante Möglichkeit, alle Elemente einer Sequenzsequenz herauszufiltern, für die die Funktion True zurückgibt. Hier ist ein kleines Programm, das die ungeraden Zahlen aus einer Eingabeliste zurückgibt:
Filtern Sie alle ungeraden Zahlen mit filter() und der Lambda-Funktion heraus
Hier gibt Lambda x: (x % 2 != 0) True oder False zurück, wenn x nicht gerade ist. Da filter() Elemente nur dort behält, wo sie erzeugt werden WAHR , daher werden alle erzeugten ungeraden Zahlen entfernt FALSCH .
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)> |
>
>
Ausgabe:
[5, 7, 97, 77, 23, 73, 61]>
Filtern Sie alle Personen, die älter als 18 Jahre sind, mithilfe der Lambda- und filter()-Funktion
Der Code filtert eine Altersliste und extrahiert das Alter von Erwachsenen (Alter über 18) mithilfe einer Lambda-Funktion und der ' filter'>
Funktion. Anschließend wird die Liste der Erwachsenenalter gedruckt. Die Ausgabe zeigt das Alter von Personen an, die 18 Jahre oder älter sind.
Python3
ages> => [> 13> ,> 90> ,> 17> ,> 59> ,> 21> ,> 60> ,> 5> ]> adults> => list> (> filter> (> lambda> age: age>> 18> , ages))> print> (adults)> |
Javascript for-Schleife
>
>
Ausgabe:
[90, 59, 21, 60]>
Verwenden der Funktion lambda() mit map()
Die Funktion „map()“ in Python akzeptiert eine Funktion und eine Liste als Argument. Die Funktion wird mit einer Lambda-Funktion und einer Liste aufgerufen und eine neue Liste wird zurückgegeben, die alle von dieser Funktion für jedes Element zurückgegebenen Lambda-modifizierten Elemente enthält. Beispiel:
Multiplizieren Sie alle Elemente einer Liste mit 2 mithilfe der Lambda- und Map()-Funktion
Der Code verdoppelt jedes Element in einer Liste mithilfe einer Lambda-Funktion und der ' map'>
Funktion. Anschließend wird die neue Liste mit den verdoppelten Elementen gedruckt. Die Ausgabe zeigt jedes Element aus der ursprünglichen Liste, multipliziert mit 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)> |
>
>
Ausgabe:
[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>
Wandeln Sie alle Elemente einer Liste mithilfe der Lambda- und Map()-Funktion in Großbuchstaben um
Der Code wandelt eine Liste von Tiernamen mithilfe einer Lambda-Funktion in Großbuchstaben um ' map'>
Funktion. Anschließend wird die Liste mit den Tiernamen in Großbuchstaben gedruckt. Die Ausgabe zeigt die Tiernamen ausschließlich in Großbuchstaben an.
Python3
animals> => [> 'dog'> ,> 'cat'> ,> 'parrot'> ,> 'rabbit'> ]> uppered_animals> => list> (> map> (> lambda> animal: animal.upper(), animals))> print> (uppered_animals)> |
>
>
Ausgabe:
['DOG', 'CAT', 'PARROT', 'RABBIT']>
Verwenden der Lambda()-Funktion mit Reduce()
Der reduzieren() Funktion in Python akzeptiert eine Funktion und eine Liste als Argument. Die Funktion wird mit einer Lambda-Funktion und einer Iterable aufgerufen und ein neues reduziertes Ergebnis wird zurückgegeben. Dadurch wird eine sich wiederholende Operation über die Paare des Iterables ausgeführt. Die Funktion Reduce() gehört zur Funktionstools Modul.
Eine Summe aller Elemente in einer Liste mithilfe der Lambda- und Reduce()-Funktion
Der Code berechnet die Summe der Elemente in einer Liste mithilfe von ' reduce'>
Funktion aus dem ' functools'>
Modul. Es importiert ' reduce'>
, definiert eine Liste, wendet eine Lambda-Funktion an, die jeweils zwei Elemente hinzufügt, und gibt die Summe aller Elemente in der Liste aus. Die Ausgabe zeigt die berechnete Summe an.
Python3
from> functools> import> reduce> li> => [> 5> ,> 8> ,> 10> ,> 20> ,> 50> ,> 100> ]> sum> => reduce> ((> lambda> x, y: x> +> y), li)> print> (> sum> )> |
>
>
Ausgabe:
193>
Hier werden die Ergebnisse der beiden vorherigen Elemente zum nächsten Element hinzugefügt und dies wird bis zum Ende der Liste fortgesetzt, beispielsweise (((((5+8)+10)+20)+50)+100).
Finden Sie das maximale Element in einer Liste mit Lambda und der Funktion Reduce()
Der Code verwendet die ' functools'>
Modul, um das maximale Element in einer Liste zu finden ( ' lis'>
) durch den Einsatz der ' reduce'>
Funktion und eine Lambda-Funktion. Anschließend wird das maximale Element gedruckt, in diesem Fall 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))> |
>
>
Ausgabe:
The maximum element of the list is : 6>