2.1 Definition von Lambda-Funktionen
Lambda-Funktionen, auch bekannt als anonyme Funktionen, sind
kompakte Einzeiler ohne Namen, die mit dem Schlüsselwort lambda
erstellt werden.
Im Gegensatz zu normalen Funktionen, die mit def
definiert werden, werden Lambda-Funktionen
spontan erstellt und normalerweise für einfache Operationen genutzt, die in einer Zeile ausgeführt werden.
Der Syntax einer Lambda-Funktion besteht aus dem Schlüsselwort
lambda
, gefolgt von Argumenten, einem Doppelpunkt und
einem Ausdruck:
lambda argumente: ausdruck
Lambda-Funktionen können eine beliebige Anzahl von Argumenten annehmen, aber sie können nur einen Ausdruck enthalten. Der Wert dieses Ausdrucks wird automatisch zurückgegeben.
Beispiele:
Lambda-Funktion | Normale Funktion |
---|---|
|
|
|
|
|
|
2.2 Anwendung von Lambda-Funktionen
Lambda-Funktionen werden oft zusammen mit anderen Funktionen verwendet,
wie map()
, filter()
und
sorted()
, sowie als Argumente für andere Funktionen.
Verwendung mit map()
Die Funktion map()
wendet eine gegebene Funktion auf jedes Element
eines iterierbaren Objekts an und gibt einen Iterator mit den Ergebnissen zurück.
Lambda-Funktionen sind ideal für die Verwendung mit map()
,
da sie eine schnelle Definition der Umwandlungsfunktion für Elemente ermöglichen.
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Ausgabe: [1, 4, 9, 16, 25]
Verwendung mit filter()
Die Funktion filter()
gibt einen Iterator zurück, der aus
den Elementen eines iterierbaren Objekts besteht, für die die gegebene Funktion
True zurückgibt. Lambda-Funktionen ermöglichen eine schnelle Definition der Bedingung für das Filtern.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Ausgabe: [2, 4, 6, 8, 10]
Verwendung mit sorted()
Die Funktion sorted()
sortiert die Elemente eines iterierbaren Objekts.
Lambda-Funktionen können verwendet werden, um ein benutzerdefiniertes Sortierkriterium mit dem Argument key
zu definieren.
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # Ausgabe: ['date', 'apple', 'banana', 'cherry']
Lambdas in Ausdrücken
Lambda-Funktionen können innerhalb anderer Ausdrücke, wie Listenkomprehensionen und Dictionary-Generatoren, verwendet werden.
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # Ausgabe: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
2.3 Einschränkungen von Lambda-Funktionen
Lambda-Funktionen haben einige Einschränkungen im Vergleich zu normalen Funktionen:
Beschränkung auf Ausdrücke:
Lambda-Funktionen können nur einen Ausdruck enthalten und keine komplexen Anweisungen wie Schleifen oder Flusssteuerungsanweisungen
(z.B. if
, else
, usw.).
Keine Dokumentation:
Lambda-Funktionen können keine Dokumentationszeile (docstring) enthalten, was es erschwert, ihre Funktionalität zu dokumentieren.
Begrenzte Debugging-Möglichkeiten:
Aufgrund des Mangels an Namen und Dokumentation sind Lambda-Funktionen schwieriger zu debuggen als normale Funktionen.
Beispiel einer Einschränkung von Lambda-Funktionen
Der Versuch, mehrere Ausdrücke innerhalb einer Lambda-Funktion zu verwenden, führt zu einem Syntaxfehler:
# Dieser Code verursacht einen Fehler
invalid_lambda = lambda x: x ** 2; print(x)
GO TO FULL VERSION