Lambda-Funktionen in Python

Wie in zahlreichen anderen Programmiersprachen, gibt es auch in Python die Möglichkeit, anonyme Funktionen (Lambda-Funktionen) zu erstellen. Darunter versteht man Funktionen, die über keinen Funktionsnamen verfügen.[1] Anhand von zwei Beispielen möchte ich demonstrieren, wie diese Funktionen genutzt werden können.

Zunächst werfen wir einen Blick auf die Syntax:

lambda arguments : expression

Dabei kann die Anzahl der Argumente beliebig sein. Es darf aber nur ein Ausdruck vorhanden sein.

Betrachten wir als nächstes eine einfache Funktion. Es sollen lediglich zwei Werte multipliziert werden:

def multiply_values(a, b):
return a * b

print(multiply_values(2, 2)) # -> 4

Mit einer Lambda-Funktion würde dies wie im folgenden Beispiel aussehen. Der Rückgabewert der Lambda-Funktion wird hier der Variablen multiply_values zugewiesen.

multiply_values = lambda x, y: x*y
print(multiply_values(2, 2)) # -> 4

Im zweiten Beispiel soll jedes Element einer Liste mit dem Wert 2 multipliziert werden. Hierbei nutze ich die Built-In-Funktionen range() und len().[2]

my_values = [6, 8, 10, 12, 14]

for i in range(len(my_values)):
    my_values[i] *= 2

print(my_values)
# -> [12, 16, 20, 24, 28]   

Als Variante zur for-Schleife kommt nun map() zum Einsatz. Diese Funktion erwartet als ersten Parameter eine Funktion und als zweiten Parameter eine Sequenz. Es ist also möglich, die Lambda-Funktion als Argument zu übergeben.

my_values = map(lambda i: i * 2, my_values)
print(list(my_values))
# -> [12, 16, 20, 24, 28]

An diesem Beispiel wird deutlich, welchen Vorteil eine Lambda-Funktion hat: Der Code läßt sich (hier zu einem Einzeiler) verkürzen. Freilich kann man sich aber darüber streiten, ob dies auf Kosten der Lesbarkeit geht. Außerdem mag – gerade bei Einsteigern – eine Lambda-Funktion große Konfusion auslösen.

Der Vollständigkeit halber sei erwähnt, dass man als Variante auch eine list comprehension verwenden könnte:

my_values = [i * 2 for i in my_values]
print(my_values)
# -> [12, 16, 20, 24, 28]

Wie Ihr den Beispielen entnehmen könnt, führen – wie so häufig – mehrere Wege zum Ziel. Ob man in der Praxis auf eine Lambda-Funktion zurückgreift, wird dabei häufig Geschmacksache sein.


  1. Vgl. den entsprechenden Wikipedia-Artikel.  ↩

  2. Eine Übersicht zu den Built-In-Funktionen findet sich in der offiziellen Python-Dokumentation.  ↩

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Diese Website speichert Cookies. Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben. Mit der Verwendung dieser Internetpräsenz stimmen Sie zu, dass diese Seiten Cookies für Analysen, personalisierte Inhalte und Werbung verwenden dürfen. Weitere Informationen hierzu finden Sie in meiner Datenschutzerklärung.

Schließen