Ein Leitfaden für Anfänger zum Verständnis der Python-Lambda-Funktionen
Lambdas in Python sind eine der nützlichsten, wichtigsten und interessantesten Funktionen, die Sie kennen sollten. Leider sind sie leicht zu verstehen und falsch zu verstehen.
In diesem Artikel erklären wir Ihnen alles, was Sie über diese geheimnisvollen Funktionen wissen müssen, wie Sie sie verwenden und warum sie nützlich sind.
Bevor Sie sich mit diesen praktischen Beispielen befassen, möchten Sie möglicherweise eine virtuelle Python-Umgebung einrichten. Informationen zur Verwendung der virtuellen Python-Umgebung. Informationen zur Verwendung der virtuellen Python-Umgebung. Ob Sie ein erfahrener Python-Entwickler sind oder gerade erst lernen, wie Sie lernen Die Einrichtung einer virtuellen Umgebung ist für jedes Python-Projekt unerlässlich. Weiterlesen . Wenn Sie dies nicht einmal tun möchten, sollten Sie diese Beispiele zumindest mit einer interaktiven Online-Python-Shell ausprobieren. Versuchen Sie, Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Shells zu testen. Versuchen Sie, Python in Ihrem Browser mit diesen kostenlosen interaktiven Online-Shells. Wenn Sie diese Python-Beispiele durchgehen oder die Grundlagen von Arrays und Listen durchsehen, können Sie den Code direkt in Ihrem Browser testen. Hier sind die besten Online-Python-Interpreter, die wir gefunden haben. Weiterlesen .
Was ist ein Lambda in Python??
Ein Lambda ist einfach eine Möglichkeit, eine Funktion in Python zu definieren. Sie sind manchmal als bekannt “Lambda-Betreiber” oder “Lambda-Funktionen”.
Wenn Sie Python bereits verwendet haben, haben Sie Ihre Funktionen wahrscheinlich mit Hilfe von definiert def Stichwort, und es hat bisher für Sie gut funktioniert. Warum gibt es einen anderen Weg, das Gleiche zu tun??
Der Unterschied ist, dass Lambda-Funktionen anonym sind. Das heißt, es sind Funktionen, die nicht benannt werden müssen. Sie werden verwendet, um kleine, einmalige Funktionen in Fällen zu erstellen, in denen a “echt” Funktion wäre zu groß und sperrig.
Lambdas geben ein Funktionsobjekt zurück, das einer Variablen zugewiesen werden kann. Lambdas können eine beliebige Anzahl von Argumenten haben, sie können jedoch nur einen Ausdruck haben. Sie können keine anderen Funktionen innerhalb von Lambdas aufrufen.
Die gebräuchlichste Verwendung für Lambda-Funktionen besteht im Code, der eine einfache einzeilige Funktion erfordert, bei der es zu übertrieben wäre, eine vollständige normale Funktion zu schreiben. Dies wird weiter unten ausführlicher behandelt “Was ist mit Karte, Filter und Verkleinerung??”.
Verwendung von Lambdas in Python
Bevor wir uns eine Lambda-Funktion ansehen, betrachten wir eine Super-Grundfunktion, die die definiert “traditionell” Weg:
def add_five (number): Rückgabe number + 5 print (add_five (number = 4))
Diese Funktion ist sehr einfach, dient jedoch zur Veranschaulichung von Lambdas. Ihre können komplexer sein. Diese Funktion fügt einer beliebigen Zahl fünf hinzu, die über das Feld übergeben wird Nummer Parameter.
So sieht es als Lambda-Funktion aus:
add_five = lambda number: number + 5 print (add_five (number = 4))
Anstatt zu benutzen def, das Wort Lambda wird eingesetzt. Es sind keine Klammern erforderlich, sondern alle Wörter, die auf das Symbol folgen Lambda Schlüsselwörter werden als Parameter erstellt. Der Doppelpunkt wird verwendet, um die Parameter und den Ausdruck zu trennen. In diesem Fall lautet der Ausdruck Anzahl + 5.
Es ist nicht nötig, das zu verwenden Rückkehr Stichwort-das Lambda erledigt dies automatisch für Sie.
So erstellen Sie eine Lambda-Funktion mit zwei Argumenten:
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
Wenn Sie sich noch nicht sicher sind, wo sich Lambdas befinden, taucht der nächste Abschnitt ein und hilft Ihnen, das Licht zu sehen.
Python-Lambdas mit Karte, Filter und Verkleinerung
In der Python-Kernbibliothek werden drei Methoden aufgerufen Karte, reduzieren, und Filter. Diese Methoden sind möglicherweise die besten Gründe für die Verwendung von Lambda-Funktionen.
Das Karte Die Funktion erwartet zwei Argumente: eine Funktion und eine Liste. Sie nimmt diese Funktion und wendet sie auf jedes Element in der Liste an, wobei sie die Liste der geänderten Elemente als Kartenobjekt zurückgibt. Das Liste Funktion wird verwendet, um das resultierende Kartenobjekt wieder in eine Liste umzuwandeln.
So verwenden Sie eine Karte ohne Lambda:
list1 = [2, 4, 6, 8] print (list1) def add_five (number): Rückgabennummer + 5 new_list = list (map (add_five, list1)) print (new_list)
Diese Kartenfunktion ist recht praktisch, könnte aber besser sein. das add_five Funktion wird als Argument übergeben, aber was ist, wenn Sie nicht jedes Mal eine Funktion erstellen möchten, wenn Sie map verwenden? Sie können stattdessen ein Lambda verwenden!
So sieht derselbe Code aus, nur wenn die Funktion durch ein Lambda ersetzt wird:
list1 = [2, 4, 6, 8] print (list1) new_list = list (karte (lambda x: x + 5, list1)) drucken (new_list)
Wie Sie sehen können, das Ganze add_five Funktion ist nicht mehr erforderlich. Stattdessen wird die Lambda-Funktion verwendet, um die Dinge ordentlich zu halten.
Mit dem Filter Funktion ist der Prozess weitgehend der gleiche. Filter übernimmt eine Funktion und wendet sie auf alle Elemente in einer Liste an und erstellt eine neue Liste mit nur den Elementen, die dazu geführt haben, dass die Funktion True zurückgibt.
Erstens ohne Lambdas:
Zahlen = [1, 4, 5, 10, 20, 30] print (Zahlen) def größer_than_ten_func (Zahl): Wenn Zahl> 10: Rückgabe True sonst: Rückgabe False new_numbers = Liste (Filter (größere_than_ten_func, Zahlen)) print (neue_Nummern) )
Es ist nichts falsch an diesem Code, aber es wird ein bisschen lang. Mal sehen, wie viele Zeilen ein Lambda entfernen kann:
Zahlen = [1, 4, 5, 10, 20, 30] print (Zahlen) new_numbers = list (Filter (Lambda x: x> 10, Zahlen)) print (new_numbers)
Die Lambda-Funktion hat die Notwendigkeit für das Ganze ersetzt größere_than_ten_func! Und das in fünf einfachen Worten. Deshalb sind Lambdas mächtig: Sie reduzieren den Durcheinander für einfache Aufgaben.
Zum Schluss schauen wir uns mal an reduzieren. Reduzieren ist eine weitere coole Python-Funktion. Es wendet eine rollierende Berechnung auf alle Elemente in einer Liste an. Sie können dies verwenden, um eine Gesamtsumme zusammenzufassen oder alle Zahlen miteinander zu multiplizieren:
von functools import zahlen reduzieren zahlen = [10, 20, 30, 40] print (zahlen) def Sommer (a, b): Ergebnis a + b zurückgeben = verringern (Sommer, Zahlen) print (Ergebnis)
Dieses Beispiel muss importiert werden reduzieren von dem functools Modul, aber keine Sorge, das functools-Modul ist Teil der Python-Kernbibliothek.
Die Geschichte ist mit einem Lambda sehr ähnlich, eine Funktion ist nicht erforderlich:
von functools import zahlen reduzieren zahlen = [10, 20, 30, 40] drucken (zahlen) ergebnis = verringern (lambda a, b: a + b, zahlen) drucken (ergebnis)
Dinge, die Sie mit Python Lambdas beachten sollten
Diese Beispiele haben gezeigt, wie einfach Lambda-Funktionen aus der Python-Kernbibliothek zusammen mit Map, Filter und Reduction sind. Dennoch gibt es einige Anwendungen, bei denen Lambda-Funktionen nicht helfen.
Wenn Sie mehr als nur eine grundlegende Aufgabe ausführen oder andere Methoden aufrufen möchten, verwenden Sie eine normale Funktion. Lambdas eignen sich hervorragend für einmalige, anonyme Funktionen, sie müssen jedoch nur einen einzigen Ausdruck haben. Wenn Ihr Lambda wie ein regulärer Ausdruck aussieht, ist es wahrscheinlich an der Zeit, eine dedizierte Methode zu verwenden.
Weitere Tipps finden Sie in unserem Handbuch zur objektorientierten Programmierung in Python. Einsteigerhandbuch für Python Objektorientierte Programmierung Einsteigerhandbuch für Python Objektorientierte Programmierung Um die Stärken von Python voll ausnutzen zu können, sollten Sie wissen, wie Python funktioniert Objektorientierte Programmierung (OOP). Weitere Informationen finden Sie in unserem FAQ-Leitfaden für Python-Einsteiger. Die am häufigsten gestellten Fragen zur Python-Programmierung Die am häufigsten gestellten Fragen zur Python-Programmierung In diesem Artikel erfahren Sie alles, was Sie über Python als Anfänger wissen müssen. Weiterlesen .
Erfahren Sie mehr über: Codierungs-Tutorials, Python.