Ein Anfängerleitfaden zum Verständnis der Python Lambda-Funktionen

Ein Anfängerleitfaden 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 auch leicht zu missverstehen und falsch zu liegen.





In diesem Artikel erklären wir alles, was Sie über diese mysteriösen 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 vielleicht eine virtuelle Python-Umgebung einrichten. Wenn du das nicht einmal machen möchtest, dann solltest du zumindest diese Beispiele ausprobieren mit einer interaktiven Online-Python-Shell .





Was ist ein Lambda in Python?

Ein Lambda ist einfach eine Möglichkeit, eine Funktion in Python zu definieren. Sie werden manchmal als „Lambda-Operatoren“ oder „Lambda-Funktionen“ bezeichnet.

Wenn Sie Python schon einmal verwendet haben, haben Sie Ihre Funktionen wahrscheinlich mit dem def Schlüsselwort, und es hat für Sie bisher gut funktioniert. Warum gibt es eine andere Möglichkeit, dasselbe zu tun?



Der Unterschied besteht darin, dass Lambda-Funktionen anonym sind. Das heißt, es sind Funktionen, die nicht benannt werden müssen. Sie werden verwendet, um kleine, einmalige Funktionen zu erstellen, wenn eine „echte“ Funktion zu groß und sperrig wäre.

Lambdas geben ein Funktionsobjekt zurück, das einer Variablen zugewiesen werden kann. Lambdas können eine beliebige Anzahl von Argumenten haben, jedoch nur einen Ausdruck. Sie können keine anderen Funktionen innerhalb von Lambdas aufrufen.





Die häufigste Verwendung für Lambda-Funktionen findet sich in Code, der eine einfache einzeilige Funktion erfordert, wo es übertrieben wäre, eine vollständig normale Funktion zu schreiben. Dies wird weiter unten unter 'Was ist mit Karte, Filter und Reduzieren?' ausführlicher behandelt.

So verwenden Sie Lambdas in Python

Bevor wir uns eine Lambda-Funktion ansehen, schauen wir uns eine super einfache Funktion an, die auf 'traditionelle' Weise definiert wurde:





def add_five(number):
return number + 5

print(add_five(number=4))

Diese Funktion ist sehr einfach, dient aber zur Veranschaulichung von Lambdas. Ihre kann komplexer sein. Diese Funktion addiert fünf zu jeder Zahl, die ihr über die übergeben wird Nummer Parameter.

So sieht es als Lambda-Funktion aus:

add_five = lambda number: number + 5

print(add_five(number=4))

Anstatt zu verwenden def , das Wort Lambda wird genutzt. Es sind keine Klammern erforderlich, aber alle Wörter nach dem Lambda Schlüsselwort werden als Parameter angelegt. Der Doppelpunkt wird verwendet, um die Parameter und den Ausdruck zu trennen. In diesem Fall lautet der Ausdruck Zahl + 5 .

Es besteht keine Notwendigkeit, die zu verwenden Rückkehr Schlüsselwort---das Lambda erledigt dies automatisch für Sie.

So erstellen Sie eine Lambda-Funktion mit zwei Argumenten:

Handy mit WLAN-Router verbinden
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Wenn Sie sich bezüglich der Lambdas-Punkte immer noch nicht sicher sind, wird der nächste Abschnitt eintauchen und Ihnen helfen, das Licht zu sehen.

Python Lambdas mit Karte, Filter und Reduzieren

Die Python-Kernbibliothek hat drei Methoden namens Karte , reduzieren , und Filter . Diese Methoden sind möglicherweise die besten Gründe, Lambda-Funktionen zu verwenden.

Die Karte function erwartet zwei Argumente: eine Funktion und eine Liste. Es nimmt diese Funktion und wendet sie auf jedes Element in der Liste an und gibt die Liste der geänderten Elemente als Map-Objekt zurück. Die aufführen -Funktion wird verwendet, um das resultierende Kartenobjekt wieder in eine Liste zu konvertieren.

So verwenden Sie die Karte ohne Lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Diese Kartenfunktion ist recht praktisch, könnte aber besser sein. das add_five function 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 wurde:

Kann Xbox One Bluetooth-Headsets verwenden?
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Wie ihr seht, das ganze add_five Funktion wird nicht mehr benötigt. Stattdessen wird die Lambda-Funktion verwendet, um die Dinge ordentlich zu halten.

Mit dem Filter Funktion ist der Vorgang ähnlich. Filter nimmt eine Funktion und wendet sie auf jedes Element in einer Liste an und erstellt eine neue Liste mit nur den Elementen, die dazu geführt haben, dass die Funktion True zurückgibt.

Zunächst ohne Lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

An diesem Code ist nichts auszusetzen, aber er wird etwas lang. Mal sehen, wie viele Zeilen ein Lambda entfernen kann:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Die Lambda-Funktion hat die Notwendigkeit des Ganzen ersetzt größer_than_ten_func ! Und das in fünf einfachen Worten. Aus diesem Grund sind Lambdas leistungsstark: Sie reduzieren Unordnung für einfache Aufgaben.

Schauen wir uns zum Schluss an reduzieren . Reduce ist eine weitere coole Python-Funktion. Es wendet eine fortlaufende Berechnung auf alle Elemente in einer Liste an. Sie können dies verwenden, um eine Gesamtsumme zu berechnen oder alle Zahlen miteinander zu multiplizieren:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Dieses Beispiel muss importiert werden reduzieren von dem Funktools Modul, aber keine Sorge, das Modul functools ist Teil der Python-Kernbibliothek.

Bei einem Lambda ist die Geschichte sehr ähnlich, eine Funktion ist nicht erforderlich:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Dinge, auf die Sie bei Python Lambdas achten sollten

Diese Beispiele haben gezeigt, wie einfach Lambda-Funktionen zusammen mit Map, Filter und Reduce aus der Python-Kernbibliothek sind. Dennoch gibt es einige Anwendungen, bei denen Lambda-Funktionen nicht helfen.

Wenn Sie mehr als eine einfache Aufgabe ausführen oder andere Methoden aufrufen möchten, verwenden Sie eine normale Funktion. Lambdas eignen sich hervorragend für einmalige, anonyme Funktionen, aber sie dürfen nur einen einzigen Ausdruck haben. Wenn Ihr Lambda wie ein regulärer Ausdruck aussieht, ist es wahrscheinlich an der Zeit, eine dedizierte Methode umzugestalten.

Weitere Tipps finden Sie in unserem Anleitung zur objektorientierten Programmierung in Python und lesen Sie unseren FAQ-Leitfaden für Python-Anfänger.

Teilen Teilen Tweet Email 3 Möglichkeiten, um zu überprüfen, ob eine E-Mail echt oder gefälscht ist

Wenn Sie eine E-Mail erhalten haben, die etwas zweifelhaft aussieht, ist es immer am besten, die Echtheit zu überprüfen. Hier sind drei Möglichkeiten, um festzustellen, ob eine E-Mail echt ist.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Python
  • Codierungs-Tutorials
Über den Autor Joe Coburn(136 veröffentlichte Artikel)

Joe hat einen Abschluss in Informatik an der University of Lincoln, Großbritannien. Er ist ein professioneller Softwareentwickler und wenn er nicht gerade Drohnen fliegt oder Musik schreibt, ist er oft beim Fotografieren oder Videoproduzieren anzutreffen.

Mehr von Joe Coburn

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren