Python Lambda-Funktionen mit BEISPIELEN
⚡ Intelligente Zusammenfassung
Lambda-Funktionen in Python Lambda-Funktionen sind kleine anonyme Funktionen, die mit dem Schlüsselwort lambda anstelle von def definiert werden. Sie enthalten einen einzelnen Ausdruck, können beliebig viele Argumente annehmen und werden oft direkt an eingebaute Funktionen wie map(), filter() und sorted() übergeben.
Was ist die Lambda-Funktion in Python?
A Lambda-Funktion in Python Beim Programmieren handelt es sich um eine anonyme Funktion oder eine Funktion ohne Namen. Es handelt sich um eine kleine und eingeschränkte Funktion mit nicht mehr als einer Zeile. Genau wie eine normale Funktion kann eine Lambda-Funktion mehrere Argumente mit einem Ausdruck haben.
In Pythonwerden Lambda-Ausdrücke (oder Lambda-Formen) verwendet, um anonyme Funktionen zu konstruieren. Dazu verwenden Sie die Lambda Schlüsselwort (genau wie Sie verwenden def um normale Funktionen zu definieren). Jede anonyme Funktion, die Sie in Python besteht aus drei wesentlichen Teilen:
- Das Lambda-Schlüsselwort.
- Die Parameter (oder gebundenen Variablen) und
- Der Funktionskörper.
Eine Lambda-Funktion kann eine beliebige Anzahl von Parametern haben, der Funktionskörper kann jedoch nur Parameter enthalten dank One Ausdruck. Darüber hinaus wird ein Lambda in einer einzigen Codezeile geschrieben und kann auch sofort aufgerufen werden. All dies werden Sie in den kommenden Beispielen in Aktion sehen.
Syntax und Beispiele
Die formale Syntax zum Schreiben einer Lambda-Funktion ist wie folgt:
lambda p1, p2: expression
Hier sind p1 und p2 die Parameter, die an die Lambda-Funktion übergeben werden. Sie können so viele oder wenige Parameter hinzufügen, wie Sie benötigen.
Beachten Sie jedoch, dass wir die Parameter nicht wie bei regulären Funktionen in Klammern setzen. Der letzte Teil (Ausdruck) kann beliebig sein. Python Ausdruck, der auf die Parameter angewendet wird, die Sie der Funktion übergeben.
Beispiel 1
Nachdem Sie nun über Lambdas Bescheid wissen, versuchen wir es anhand eines Beispiels. Also, öffnen Sie Ihr IDLE und geben Sie Folgendes ein:
adder = lambda x, y: x + y print (adder (1, 2))
Code Erläuterung
Hier definieren wir eine Variable, die das von der Lambda-Funktion zurückgegebene Ergebnis enthält.
1. Das Lambda-Schlüsselwort, das zum Definieren einer anonymen Funktion verwendet wird.
2. x und y sind die Parameter, die wir an die Lambda-Funktion übergeben.
3. Dies ist der Hauptteil der Funktion, der die beiden von uns übergebenen Parameter hinzufügt. Beachten Sie, dass es sich um einen einzelnen Ausdruck handelt. Sie können nicht mehrere Anweisungen in den Hauptteil einer Lambda-Funktion schreiben.
4. Wir rufen die Funktion auf und geben den zurückgegebenen Wert aus.
Beispiel 2
Das war ein einfaches Beispiel, um die Grundlagen und die Syntax von Lambda-Ausdrücken zu verstehen. Versuchen wir nun, einen Lambda-Ausdruck auszugeben und das Ergebnis zu betrachten. Öffnen Sie dazu erneut Ihre Datei. IDLE und geben Sie Folgendes ein:
#What a lambda returns string='some kind of a useless lambda' print(lambda string : print(string))
Speichern Sie nun Ihre Datei und drücken Sie F5, um das Programm auszuführen. Dies ist die Ausgabe, die Sie erhalten sollten.
Ausgang:
<function <lambda> at 0x00000185C3BF81E0>
Was geschieht hier? Schauen wir uns den Code an, um das besser zu verstehen.
Code Erläuterung:
1. Hier definieren wir ein Schnur das Sie als Parameter an die Lambda-Funktion übergeben werden.
2. Wir deklarieren eine Lambda-Funktion, die eine print-Anweisung aufruft und das Ergebnis ausgibt.
Warum gibt das Programm die übergebene Zeichenkette nicht aus? Das liegt daran, dass die Lambda-Funktion selbst ein Funktionsobjekt zurückgibt. In diesem Beispiel wird die Lambda-Funktion nicht ausgeführt. namens durch die Druckfunktion, sondern einfach Rückkehr Das Funktionsobjekt und der Speicherort, an dem es gespeichert ist. Das wird in der Konsole ausgegeben.
Beispiel 3
Wenn Sie jedoch ein Programm wie dieses schreiben:
#What a lambda returns #2 x="some kind of a useless lambda" (lambda x : print(x))(x)
Und wenn Sie es durch Drücken von F5 ausführen, sehen Sie eine Ausgabe wie diese.
Ausgang:
some kind of a useless lambda
Die Lambda-Funktion wird nun aufgerufen, und die übergebene Zeichenkette wird in der Konsole ausgegeben. Doch was hat es mit dieser ungewöhnlichen Syntax auf sich, und warum steht die Lambda-Definition in Klammern? Das wollen wir uns jetzt ansehen.
Code Erläuterung:
1. Hier ist die gleiche Zeichenkette, die wir im vorherigen Beispiel definiert haben.
2. In diesem Abschnitt definieren wir eine Lambda-Funktion und rufen sie sofort auf, indem wir die Zeichenkette als Argument übergeben. Dies nennt man IIFE (Immediately Invoked Function Expression), und Sie werden in den folgenden Abschnitten dieses Tutorials mehr darüber erfahren.
Beispiel 4
Betrachten wir ein letztes Beispiel, um zu verstehen, wie Lambdas und reguläre Funktionen ausgeführt werden. Öffnen Sie also Ihre IDLE und geben Sie in einer neuen Datei Folgendes ein:
#A REGULAR FUNCTION def guru( funct, *args ): funct( *args ) def printer_one( arg ): return print (arg) def printer_two( arg ): print(arg) #CALL A REGULAR FUNCTION guru( printer_one, 'printer 1 REGULAR CALL' ) guru( printer_two, 'printer 2 REGULAR CALL \n' ) #CALL A REGULAR FUNCTION THRU A LAMBDA guru(lambda: printer_one('printer 1 LAMBDA CALL')) guru(lambda: printer_two('printer 2 LAMBDA CALL'))
Speichern Sie nun die Datei und drücken Sie F5, um das Programm auszuführen. Wenn Sie keine Fehler gemacht haben, sollte die Ausgabe in etwa so aussehen.
Ausgang:
printer 1 REGULAR CALL printer 2 REGULAR CALL printer 1 LAMBDA CALL printer 2 LAMBDA CALL
Code Erläuterung:
1. Eine Funktion namens guru, die eine andere Funktion als ersten Parameter und alle weiteren Argumente als nachfolgenden Parameter entgegennimmt.
2. printer_one ist eine einfache Funktion, die den ihr übergebenen Parameter ausgibt und zurückgibt.
3. printer_two ist ähnlich wie printer_one, jedoch ohne die return-Anweisung.
4. In diesem Teil rufen wir die Guru-Funktion auf und übergeben die Druckerfunktionen und eine Zeichenkette als Parameter.
5. Dies ist die Syntax, um den vierten Schritt (d. h. den Aufruf der Guru-Funktion) mithilfe von Lambdas zu erreichen.
Im nächsten Abschnitt erfahren Sie, wie Sie Lambda-Funktionen verwenden map (), reduzieren() und Filter() in Python.
Die Verwendung von Lambdas mit Python eingebaute
Lambda-Funktionen bieten eine elegante und leistungsstarke Möglichkeit, Operationen mit integrierten Methoden in Python. Dies ist möglich, weil Lambdas sofort aufgerufen und als Argument an diese Funktionen übergeben werden können.
IIFE in Python Lambda
IIFE steht für sofort aufgerufene Funktionsausführung. Das bedeutet, dass eine Lambda-Funktion sofort nach ihrer Definition aufgerufen werden kann. Betrachten wir dazu ein Beispiel: Starten Sie Ihre IDLE und geben Sie Folgendes ein:
(lambda x: x + x)(2)
Hier ist die Ausgabe und Code-Erklärung:
Diese Fähigkeit von Lambdas, sofort aufgerufen zu werden, ermöglicht es Ihnen, sie innerhalb von Funktionen wie map() und Reduce() zu verwenden. Dies ist nützlich, da Sie diese Funktionen möglicherweise nicht noch einmal verwenden möchten.
Lambdas in filter()
Die Filterfunktion wird verwendet, um bestimmte Elemente aus einer Folge von Elementen auszuwählen. Die Sequenz kann ein beliebiger Iterator wie Listen, Mengen, Tupel usw. sein.
Die Auswahl der Elemente basiert auf vordefinierten Einschränkungen. Es werden zwei Parameter benötigt:
- Eine Funktion, die die Filtereinschränkung definiert
- Eine Sequenz (beliebiger Iterator wie Listen, Tupel usw.)
Zum Beispiel,
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = filter (lambda x: x > 4, sequences) print(list(filtered_result))
Hier ist die Ausgabe:
[10, 8, 7, 5, 11]
Code Erläuterung:
1. In der ersten Anweisung definieren wir eine Liste namens „Sequenzen“, die einige Zahlen enthält.
2. Hier deklarieren wir eine Variable namens filtered_result, die die gefilterten Werte speichert, die von der Funktion filter() zurückgegeben werden.
3. Eine Lambda-Funktion, die für jedes Element der Liste ausgeführt wird und „true“ zurückgibt, wenn es größer als 4 ist.
4. Drucken Sie das von der Filterfunktion zurückgegebene Ergebnis.
Lambdas in map()
Die map-Funktion dient dazu, eine bestimmte Operation auf jedes Element einer Sequenz anzuwenden. Wie filter() benötigt sie ebenfalls zwei Parameter:
- Eine Funktion, die die auf den Elementen auszuführende Operation definiert.
- Eine oder mehrere Sequenzen
Hier ist beispielsweise ein Programm, das die Quadrate der Zahlen in einer gegebenen Liste druckt:
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = map (lambda x: x*x, sequences) print(list(filtered_result))
Ausgang:
[100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Code Erläuterung:
1. Hier definieren wir eine Liste namens Sequenzen, die einige Zahlen enthält.
2. Wir deklarieren eine Variable namens filtered_result, in der die zugeordneten Werte gespeichert werden.
3. Eine Lambda-Funktion, die auf jedes Element der Liste angewendet wird und das Quadrat dieser Zahl zurückgibt.
4. Gib das Ergebnis der map-Funktion aus.
Lambdas in Reduce()
Die Reduce-Funktion wird wie map() verwendet, um eine Operation auf jedes Element in einer Sequenz anzuwenden. Sie unterscheidet sich jedoch in ihrer Funktionsweise von map. Dies sind die Schritte, die die Reduce()-Funktion ausführt, um eine Ausgabe zu berechnen:
Schritt 1) Führen Sie die definierte Operation für die ersten beiden Elemente der Sequenz aus.
Schritt 2) Dieses Ergebnis speichern.
Schritt 3) Führen Sie die Operation mit dem gespeicherten Ergebnis und dem nächsten Element in der Sequenz aus.
Schritt 4) Wiederholen, bis keine Elemente mehr übrig sind.
Es benötigt außerdem zwei Parameter:
- Eine Funktion, die die auszuführende Operation definiert
- Eine Sequenz (beliebiger Iterator wie Listen, Tupel usw.)
Hier ist beispielsweise ein Programm, das das Produkt aller Elemente in einer Liste zurückgibt:
from functools import reduce sequences = [1,2,3,4,5] product = reduce (lambda x, y: x*y, sequences) print(product)
Hier ist die Ausgabe:
120
Code Erläuterung:
1. Importieren Sie reduce aus dem Modul functools.
2. Hier definieren wir eine Liste namens Sequenzen, die einige Zahlen enthält.
3. Wir deklarieren eine Variable namens Produkt, die den reduzierten Wert speichert.
4. Eine Lambda-Funktion, die auf jedes Element der Liste angewendet wird. Sie gibt das Produkt dieser Zahl gemäß dem vorherigen Ergebnis zurück.
5. Gib das Ergebnis der reduce-Funktion aus.
Warum (und warum nicht) Lambda-Funktionen verwenden?
Wie Sie im nächsten Abschnitt sehen werden, werden Lambdas auf Interpreterebene genauso behandelt wie reguläre Funktionen. In gewisser Weise könnte man sagen, dass Lambdas eine kompakte Syntax zum Schreiben von Funktionen bereitstellen, die einen einzelnen Ausdruck zurückgeben.
Sie sollten jedoch wissen, wann der Einsatz von Lambdas sinnvoll ist und wann Sie diese vermeiden sollten. In diesem Abschnitt lernen Sie einige der verwendeten Designprinzipien kennen. Python Entwickler beim Schreiben von Lambdas.
Einer der häufigsten Anwendungsfälle für Lambdas ist die funktionale Programmierung, da Python unterstützt ein Paradigma (oder einen Programmierstil), das als funktionale Programmierung bekannt ist.
Es ermöglicht Ihnen, eine Funktion als Parameter an eine andere Funktion zu übergeben (z. B. in `map`, `filter` usw.). In solchen Fällen bieten Lambdas eine elegante Möglichkeit, eine einmalig benötigte Funktion zu erstellen und diese als Parameter zu übergeben.
Wann sollten Sie Lambda nicht verwenden?
Sie sollten in einer Produktionsumgebung niemals komplizierte Lambda-Funktionen schreiben. Für Programmierer, die Ihren Code pflegen, wird es sehr schwierig sein, ihn zu entschlüsseln. Wenn Sie komplexe Einzeiler-Ausdrücke erstellen, ist es viel besser, eine richtige Funktion zu definieren. Als bewährte Methode sollten Sie bedenken, dass einfacher Code immer besser ist als komplexer Code.
Lambdas vs. reguläre Funktionen
Wie bereits erwähnt, sind Lambdas Funktionen ohne zugeordneten Bezeichner. Einfacher ausgedrückt: Sie sind Funktionen ohne Namen (und daher anonym). Die folgende Tabelle veranschaulicht den Unterschied zwischen Lambdas und regulären Funktionen. Python.
| Lambdas | Reguläre Funktionen |
|---|---|
Syntax:
lambda x : x + x
|
Syntax:
def (x) : return x + x |
| Lambda-Funktionen können nur einen Ausdruck in ihrem Körper haben. | Reguläre Funktionen können mehrere Ausdrücke und Anweisungen in ihrem Körper haben. |
| Lambdas haben keinen zugeordneten Namen. Deshalb werden sie auch als anonyme Funktionen bezeichnet. | Reguläre Funktionen müssen einen Namen und eine Signatur haben. |
| Lambdas enthalten keine Return-Anweisung, da der Text automatisch zurückgegeben wird. | Funktionen, die einen Wert zurückgeben müssen, sollten eine return-Anweisung enthalten. |
Erklärung der Unterschiede
Der Hauptunterschied zwischen einer Lambda-Funktion und einer regulären Funktion besteht darin, dass die Lambda-Funktion nur einen einzelnen Ausdruck auswertet und ein Funktionsobjekt zurückgibt. Folglich können wir das Ergebnis der Lambda-Funktion benennen und es in unserem Programm verwenden, wie wir es im vorherigen Beispiel getan haben.
Eine reguläre Funktion für das obige Beispiel würde so aussehen:
def adder (x, y): return x + y print (adder (1, 2))
Hier müssen wir a definieren Name für die Funktion which Rückgabe das Ergebnis, wenn wir rufen Sie uns an! Eine Lambda-Funktion enthält keine return-Anweisung, da sie nur einen einzigen Ausdruck besitzt, der standardmäßig immer zurückgegeben wird. Man muss einer Lambda-Funktion nicht einmal einen Wert zuweisen, da sie sofort aufgerufen werden kann (siehe vorherigen Abschnitt). Wie Sie sehen werden, entfalten Lambdas ihre besondere Stärke, wenn wir sie mit … verwenden. Python's integrierte Funktionen.
Sie fragen sich vielleicht immer noch, wie sich Lambdas von einer Funktion unterscheiden, die einen einzelnen Ausdruck zurückgibt (wie die oben). Auf Interpreterebene gibt es keinen großen Unterschied. Es mag überraschend klingen, aber jede Lambda-Funktion, die Sie in Python wird vom Interpreter als normale Funktion behandelt.
Auf Bytecode-Ebene werden die beiden Definitionen auf die gleiche Weise behandelt. Python Interpreter. Nun können Sie keine Funktion benennen. Lambda weil es reserviert ist von PythonAber jeder andere Funktionsname führt zum gleichen Bytecode.

