Lambda mit integrierten Funktionen verwenden (sortiert)
In diesem Schritt sehen wir einen gängigen und praktischen Anwendungsfall für Lambda-Funktionen: ihre Verwendung mit den integrierten Funktionen von Python, die eine Funktion als Argument akzeptieren. Ein hervorragendes Beispiel ist die Funktion sorted()
, die ein key
-Argument entgegennehmen kann, um eine Funktion anzugeben, die für jedes Listenelement aufgerufen wird, bevor Vergleiche durchgeführt werden.
Nehmen wir an, wir haben eine Liste von Zeichenketten und möchten diese basierend auf dem letzten Zeichen jeder Zeichenkette sortieren.
Zuerst sehen wir, wie wir dies mit einer regulären Funktion tun würden.
Erstellen Sie eine neue Python-Datei namens lambda_sorted.py
im Verzeichnis ~/project
. Öffnen Sie die Datei und fügen Sie den folgenden Code hinzu:
## List of strings
words = ['dog', 'abandon', 'cool', 'black']
## Define a regular function to get the last character
def get_last_char(s):
return s[-1]
## Sort the list using the regular function as the key
sorted_words_def = sorted(words, key=get_last_char)
## Print the sorted list
print(sorted_words_def)
Speichern Sie die Datei. Führen Sie das Skript im Terminal aus:
python ~/project/lambda_sorted.py
Sie sollten die Ausgabe sehen:
['abandon', 'cool', 'black', 'dog']
Die Liste ist sortiert nach dem letzten Zeichen: 'n', 'l', 'k', 'g'.
Nun erzielen wir dasselbe Ergebnis mit einer lambda
-Funktion. Wir können die Definition der Funktion get_last_char
und ihre Verwendung im sorted()
-Aufruf durch einen einzigen Lambda-Ausdruck ersetzen.
Fügen Sie den folgenden Code zur Datei lambda_sorted.py
hinzu:
## Sort the list using a lambda function as the key
sorted_words_lambda = sorted(words, key=lambda s: s[-1])
## Print the sorted list
print(sorted_words_lambda)
Speichern Sie die Datei. Führen Sie das Skript erneut aus:
python ~/project/lambda_sorted.py
Die Ausgabe sollte dieselbe sein und die Kompaktheit der Verwendung einer Lambda-Funktion demonstrieren:
['abandon', 'cool', 'black', 'dog']
['abandon', 'cool', 'black', 'dog']
Die direkte Verwendung von lambda s: s[-1]
innerhalb der sorted()
-Funktion ist für diese einfache Operation kompakter und besser lesbar als die Definition einer separaten Funktion. Dies ist ein gängiges Muster, wenn die für das key
-Argument benötigte Funktion einfach ist und nicht an anderer Stelle wiederverwendet wird.