In diesem Tutorial erfahren Sie alles über Lambda-Funktionen in Python – von der Syntax zum Definieren von Lambda-Funktionen bis hin zu den verschiedenen Anwendungsfällen mit Codebeispielen.
In Python sind Lambdas anonyme Funktionen, die eine prägnante Syntax haben und mit anderen hilfreichen integrierten Funktionen verwendet werden können. Am Ende dieses Tutorials haben Sie gelernt, wie man Lambda-Funktionen definiert und wann Sie sie gegenüber regulären Python-Funktionen verwenden sollten.
Lass uns anfangen!
Inhaltsverzeichnis
Python-Lambda-Funktion: Syntax und Beispiele
Hier ist die allgemeine Syntax zum Definieren einer Lambda-Funktion in Python:
lambda parameter(s):return value
In der obigen allgemeinen Syntax:
- Lambda ist das Schlüsselwort, das Sie verwenden sollten, um eine Lambda-Funktion zu definieren, gefolgt von einem oder mehreren Parametern, die die Funktion annehmen soll.
- Es gibt einen Doppelpunkt, der die Parameter und den Rückgabewert trennt.
💡 Beim Definieren einer Lambda-Funktion sollten Sie sicherstellen, dass der Rückgabewert berechnet wird, indem ein Ausdruck ausgewertet wird, der eine einzelne Codezeile umfasst. Sie werden dies besser verstehen, wenn wir Beispiele codieren.
Beispiele für Python-Lambda-Funktionen
Der beste Weg, Lambda-Funktionen zu verstehen, besteht darin, reguläre Python-Funktionen als Lambda-Funktionen umzuschreiben.
👩🏽💻 Du kannst in einer Python-REPL oder im Online-Python-Editor von wdzwdz mitcodieren.
#1. Betrachten Sie die folgende Funktion square(), die eine Zahl, num, als Argument akzeptiert und das Quadrat der Zahl zurückgibt.
def square(num): return num*num
Sie können die Funktion mit Argumenten aufrufen und überprüfen, ob sie ordnungsgemäß funktioniert.
>>> square(9) 81 >>> square(12) 144
Sie können diesen Lambda-Ausdruck einem Variablennamen zuweisen, z. B. square1, um die Funktionsdefinition präziser zu gestalten: square1 = lambda num: num*num und dann die Funktion square1 mit einer beliebigen Zahl als Argument aufrufen. Wir wissen jedoch, dass Lambdas anonyme Funktionen sind, daher sollten Sie es vermeiden, sie einer Variablen zuzuweisen.
Für die Funktion square() ist der Parameter num und der Rückgabewert ist num*num. Nachdem wir diese identifiziert haben, können wir sie in den Lambda-Ausdruck einfügen und ihn wie gezeigt mit einem Argument aufrufen:
>>> (lambda num: num*num)(2) 4
Dies ist das Konzept des sofort aufgerufenen Funktionsausdrucks, bei dem wir eine Funktion direkt nach ihrer Definition aufrufen.
#2. Als Nächstes schreiben wir eine weitere einfache Funktion add() um, die die Zahlen num1 und num2 aufnimmt und ihre Summe zurückgibt, num1 + num2.
def add(num1,num2): return num1 + num2
Rufen wir die Funktion add() mit zwei Zahlen als Argumente auf:
>>> add(4,3) 7 >>> add(12,5) 17 >>> add(12,6) 18
In diesem Fall sind num1 und num2 die beiden Parameter und der Rückgabewert ist num1 + num2.
>>> (lambda num1, num2: num1 + num2)(3,7) 10
Python-Funktionen können auch Standardwerte für Parameter annehmen. Ändern wir die Definition der Funktion add() und setzen den Standardwert des Parameters num2 auf 10.
def add(num1, num2=10): return num1 + num2
In den folgenden Funktionsaufrufen:
- Beim ersten Funktionsaufruf ist der Wert von num1 1 und der Wert von num2 3. Wenn Sie den Wert für num2 im Funktionsaufruf übergeben, wird dieser Wert verwendet; Die Funktion gibt 4 zurück.
- Wenn Sie jedoch nur ein Argument übergeben (num1 ist 7), wird der Standardwert 10 für num2 verwendet; Die Funktion gibt 17 zurück.
>>> add(1,3) 4 >>> add(7) 17
Beim Schreiben von Funktionen, die Standardwerte für bestimmte Parameter als Lambda-Ausdrücke übernehmen, können Sie den Standardwert beim Definieren der Parameter angeben.
>>> (lambda num1, num2 = 10: num1 + num2)(1) 11
Wann sollten Sie Lambda-Funktionen in Python verwenden?
Nachdem Sie nun die Grundlagen von Lambda-Funktionen in Python gelernt haben, sind hier einige Anwendungsfälle:
- Wenn Sie eine Funktion haben, deren Rückgabeausdruck eine einzelne Codezeile ist, und Sie nicht an anderer Stelle im selben Modul auf die Funktion verweisen müssen, können Sie Lambda-Funktionen verwenden. Wir haben auch einige Beispiele codiert, um dies zu verstehen.
- Sie können Lambda-Funktionen verwenden, wenn Sie integrierte Funktionen wie map(), filter() und Reduce() verwenden.
- Lambda-Funktionen können beim Sortieren von Python-Datenstrukturen wie Listen und Wörterbüchern hilfreich sein.
Verwendung von Python Lambda mit integrierten Funktionen
1. Verwenden von Lambda mit map()
Die Funktion map() übernimmt ein Iterable und eine Funktion und wendet die Funktion wie gezeigt auf jedes Element im Iterable an:
Lassen Sie uns eine Zahlenliste erstellen und die Funktion map() verwenden, um eine neue Liste zu erstellen, die das Quadrat jeder Zahl in der Zahlenliste enthält. Beachten Sie die Verwendung der Lambda-Funktion zum Definieren der Quadrierungsoperation.
>>> nums = [4,5,6,9] >>> list(map(lambda num:num*num,nums)) [16, 25, 36, 81]
Da die Funktion map() ein Kartenobjekt zurückgibt, sollten wir es in eine Liste umwandeln.
▶️ Sehen Sie sich dieses Tutorial zur Funktion map() in Python an.
2. Verwenden von Lambda mit filter()
Lassen Sie uns nums definieren, eine Liste von Zahlen:
>>> nums = [4,5,6,9]
Angenommen, Sie möchten diese Liste filtern und nur die ungeraden Zahlen beibehalten.
Sie können die eingebaute filter()-Funktion von Python verwenden.
Die Funktion filter() nimmt eine Bedingung und eine iterable auf: filter(condition, iterable). Das Ergebnis enthält nur die Elemente im ursprünglichen Iterable, die die Bedingung erfüllen. Sie können das zurückgegebene Objekt in eine iterierbare Python-Datei wie eine Liste umwandeln.
Um alle geraden Zahlen herauszufiltern, behalten wir nur die ungeraden Zahlen bei. Der Lambda-Ausdruck sollte also lambda num: num%2!=0 sein. Die Menge num%2 ist der Rest, wenn num durch 2 dividiert wird.
- num%2!=0 ist wahr, wenn num ungerade ist, und
- num%2!=0 ist False, wenn num gerade ist.
>>> nums = [4,5,6,9] >>> list(filter(lambda num:num%2!=0,nums)) [5, 9]
3. Verwenden von Lambda mit Reduce()
Die Funktion Reduce() nimmt ein Iterable und eine Funktion auf. Es reduziert das Iterable, indem es die Funktion iterativ auf die Elemente des Iterable anwendet.
Um die Funktion Reduce () zu verwenden, müssen Sie sie aus dem integrierten Functools-Modul von Python importieren:
>>> from functools import reduce
Lassen Sie uns die Funktion reduce() verwenden, um die Summe aller Zahlen in der nums-Liste zu berechnen. Wir definieren einen Lambda-Ausdruck: Lambda num1,num2:num1+num2 als reduzierende Summenfunktion.
Die Reduktionsoperation erfolgt wie folgt: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Hier ist f die Summierungsoperation für zwei Elemente der Liste, definiert durch die Lambda-Funktion.
>>> from functools import reduce >>> nums = [4,5,6,9] >>> reduce(lambda num1,num2:num1+num2,nums) 24
Python Lambda-Funktionen zum Anpassen der Sortierung
Neben der Verwendung von Lambda-Funktionen mit integrierten Python-Funktionen wie map(), filter() und Reduce() können Sie diese auch verwenden, um integrierte Funktionen und Methoden für die Sortierung anzupassen.
1. Sortieren von Python-Listen
Wenn Sie mit Python-Listen arbeiten, müssen Sie diese oft nach bestimmten Sortierkriterien sortieren. Um Python-Listen an Ort und Stelle zu sortieren, können Sie die integrierte Methode sort() für sie verwenden. Wenn Sie eine sortierte Kopie der Liste benötigen, können Sie die Funktion sorted() verwenden.
Die Syntax zur Verwendung der sorted()-Funktion von Python lautet sorted(iterable, key=…,reverse= True | False).
– Der Schlüsselparameter wird verwendet, um die Sortierung anzupassen.
– Der Reverse-Parameter kann auf True oder False gesetzt werden; der Standardwert ist False.
Beim Sortieren von Listen mit Zahlen und Zeichenfolgen erfolgt die Sortierung standardmäßig in aufsteigender bzw. alphabetischer Reihenfolge. Manchmal möchten Sie jedoch möglicherweise ein benutzerdefiniertes Kriterium für die Sortierung definieren.
Betrachten Sie die folgende Liste Früchte. Angenommen, Sie möchten eine sortierte Kopie der Liste erhalten. Sie sollten die Zeichenfolgen nach der Anzahl der Vorkommen von ‚p‘ in ihnen sortieren – in absteigender Reihenfolge.
>>> fruits = ['apple','pineapple','grapes','mango']
Es ist an der Zeit, den optionalen Schlüsselparameter zu verwenden. Ein String ist in Python ein Iterable, und um die Anzahl der Vorkommen eines Zeichens darin zu erhalten, können Sie die eingebaute Methode .count() verwenden. Also setzen wir den Schlüssel auf lambda x:x.count(‚p‘), sodass die Sortierung darauf basiert, wie oft ‚p‘ in der Zeichenfolge vorkommt.
>>> fruits = ['apple','pineapple','grapes','mango'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['pineapple', 'apple', 'grapes', 'mango']
In diesem Beispiel:
- Der Schlüssel zum Sortieren ist die Anzahl der Vorkommen des Zeichens „p“, und es ist als Lambda-Ausdruck definiert.
- Da wir den Reverse-Parameter auf True gesetzt haben, erfolgt die Sortierung in absteigender Reihenfolge der Anzahl der Vorkommen von „p“.
In der Obstliste enthält „Ananas“ 3 Vorkommen von „p“, und die Zeichenfolgen „Apple“, „Grapes“ und „Mango“ enthalten 2, 1 bzw. 0 Vorkommen von „p“.
Stable Sort verstehen
Betrachten Sie ein anderes Beispiel. Für das gleiche Sortierkriterium haben wir die Obstliste neu definiert. Hier kommt ‚p‘ in den Zeichenfolgen ‚apple‘ und ‚grapes‘ zweimal bzw. einmal vor. Und in den Saiten „mango“ und „melon“ kommt es nie vor.
>>> fruits = ['mango','apple','melon','grapes'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['apple', 'grapes', 'mango', 'melon']
In der Ausgabeliste kommt ‚mango‘ vor ‚melon‘, obwohl beide nicht das Zeichen ‚p‘ haben. Aber warum ist das so? Die Funktion sorted() führt eine stabile Sortierung durch; Wenn also die Anzahl von ‚p‘ für zwei Zeichenfolgen gleich ist, wird die Reihenfolge der Elemente in der ursprünglichen Fruchtliste beibehalten.
Als schnelle Übung tauschen Sie die Positionen von „Mango“ und „Melone“ in der Obstliste, sortieren Sie die Liste nach demselben Kriterium und beobachten Sie die Ausgabe.
▶️ Erfahren Sie mehr über das Sortieren von Python-Listen.
2. Sortieren eines Python-Wörterbuchs
Sie können beim Sortieren von Python-Wörterbüchern auch Lambdas verwenden. Betrachten Sie das folgende Wörterbuch price_dict, das Artikel und ihre Preise enthält.
>>> price_dict = { ... 'Milk':10, ... 'Honey':15, ... 'Bread':7, ... 'Candy':3 ... }
Um die Schlüssel-Wert-Paare eines Wörterbuchs als Liste von Tupeln zu erhalten, können Sie die eingebaute Wörterbuchmethode .items() verwenden:
>>> price_dict_items = price_dict.items() dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])
In Python folgen alle Iterables: Listen, Tupel, Strings und mehr der Nullindizierung. Das erste Element befindet sich also auf Index 0, das zweite Element auf Index 1 und so weiter.
Wir möchten nach dem Wert sortieren, der der Preis jedes Elements im Wörterbuch ist. In jedem Tupel in der Liste price_dict_items ist das Element bei Index 1 der Preis. Also setzen wir den Schlüssel auf Lambda x:x[1] da es das Element bei Index 1, den Preis, verwendet, um das Wörterbuch zu sortieren.
>>> dict(sorted(price_dict_items,key=lambda x:x[1])) {'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}
In der Ausgabe wurden die Wörterbucheinträge in aufsteigender Preisreihenfolge sortiert: beginnend mit „Süßigkeiten“ mit einem Preis von 3 Einheiten bis „Honig“ mit einem Preis von 15 Einheiten.
▶️ Weitere Informationen finden Sie in dieser ausführlichen Anleitung zum Sortieren eines Python-Wörterbuchs nach Schlüssel und Wert.
Zusammenfassen
Und da haben Sie es! Sie haben gelernt, Lambda-Funktionen zu definieren und sie effektiv mit anderen integrierten Python-Funktionen zu verwenden. Hier ist eine Zusammenfassung der wichtigsten Takeaways:
- In Python sind Lambdas anonyme Funktionen, die mehrere Argumente annehmen und einen Wert zurückgeben können; Der auszuwertende Ausdruck zum Generieren dieses Rückgabewerts sollte aus einer Codezeile bestehen. Sie können verwendet werden, um kleine Funktionsdefinitionen prägnanter zu machen.
- Um die Lambda-Funktion zu definieren, können Sie die folgende Syntax verwenden: Lambda-Parameter: Rückgabewert.
- Zu den wichtigen Anwendungsfällen gehört die Verwendung mit den Funktionen map(), filter() und Reduce() sowie als Schlüsselparameter zum Anpassen der Sortierung von Python-Iterablen.
Als Nächstes erfahren Sie, wie Sie die Bodenteilung in Python durchführen.