Lambdas

Python SELF DE
Level 13 , Lektion 2
Verfügbar

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

square = lambda x: x ** 2
print(square(5))  # Ausgabe: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Ausgabe: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

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)
        
    
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION