Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

In diesem Lernprogramm erfahren Sie alles über Lambda-Funktionen in Python - von der Syntax zur Definition 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 eingebauten Funktionen verwendet werden können. Am Ende dieses Tutorials werden Sie gelernt haben, wie man Lambda-Funktionen definiert und wann Sie sie im Vergleich zu regulären Python-Funktionen verwenden sollten.

Fangen wir an!

Python Lambda-Funktion: Syntax und Beispiele

Hier ist die allgemeine Syntax, um eine Lambda-Funktion in Python zu definieren:

lambda parameter(s):Rückgabewert

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 Parameter, die die Funktion annehmen soll.
  • Ein Doppelpunkt trennt die Parameter und den Rückgabewert.

bei der Definition einer Lambda-Funktion sollten Sie darauf achten, dass der Rückgabewert durch Auswertung eines Ausdrucks berechnet wird, der sich über eine einzige Codezeile erstreckt. Sie werden dies besser verstehen, wenn wir Beispiele codieren.

Beispiele für Python Lambda-Funktionen

Der beste Weg, Lambda-Funktionen zu verstehen, ist, damit zu beginnen, reguläre Python-Funktionen in Lambda-Funktionen umzuschreiben.

👩🏽‍💻 Sie können den Code in einer Python REPL oder im Online-Python-Editor von Geekflare eingeben.

#1. Betrachten Sie die folgende Funktion square(), die eine Zahl, num, als Argument annimmt 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 korrekt funktioniert.

>>> Quadrat(9)
81
>>> Quadrat(12)
144

Sie können diesen Lambda-Ausdruck einem Variablennamen zuweisen, z.B. square1, um die Funktionsdefinition prägnanter zu machen: 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.

Bei der 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 mit einem Argument aufrufen, wie gezeigt:

>>> (lambda num: num*num)(2)
4

Dies ist das Konzept des Unmittelbar aufgerufener Funktionsausdruck, bei dem wir eine Funktion direkt nach ihrer Definition aufrufen.

#2. Als Nächstes schreiben wir eine weitere einfache Funktion add(), die zwei Zahlen, num1 und num2annimmt und deren Summe, num1 num2, zurückgibt.

def add(num1,num2):
 return num1 num2

Rufen wir die Funktion auf 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. Lassen Sie uns die Definition der Funktion add() ändern und den Standardwert des Parameters num2 auf 10 setzen.

def add(zaehl1, zaehl2=10):
 return zaehl1 zaehl2

In den folgenden Funktionsaufrufen:

  • Im ersten Funktionsaufruf ist der Wert von num1 gleich 1 und der Wert von num2 gleich 3. Wenn Sie im Funktionsaufruf den Wert für num2 übergeben, wird dieser Wert verwendet; die Funktion gibt 4 zurück.
  • Wenn Sie jedoch nur ein Argument übergeben(num1 ist 7), wird der Standardwert von 10 für num2 verwendet; die Funktion gibt 17 zurück.
>>> add(1,3)
4
>>> add(7)
17

Wenn Sie Funktionen schreiben, die Standardwerte für bestimmte Parameter als Lambda-Ausdrücke übernehmen, können Sie den Standardwert bei der Definition der Parameter angeben.

>>> (lambda num1, num2 = 10: num1 num2)(1)
11

Wann sollten Sie Lambda-Funktionen in Python verwenden?

Nachdem Sie nun die Grundlagen der Lambda-Funktionen in Python kennengelernt haben, hier ein paar Anwendungsfälle:

  • Wenn Sie eine Funktion haben, deren Rückgabeausdruck aus einer einzigen Codezeile besteht und Sie die Funktion nicht an anderer Stelle im gleichen Modul referenzieren müssen, können Sie Lambda-Funktionen verwenden. Wir haben auch ein paar Beispiele kodiert, um dies zu verstehen.
  • Sie können Lambda-Funktionen verwenden, wenn Sie integrierte Funktionen wie map(), filter() und reduce() einsetzen.
  • Lambda-Funktionen können bei der Sortierung von Python-Datenstrukturen wie Listen und Wörterbüchern hilfreich sein.

Wie Sie Python Lambda mit eingebauten Funktionen verwenden

#1. Verwendung von Lambda mit map()

Die Funktion map() nimmt eine Iterable und eine Funktion auf und wendet die Funktion auf jedes Element in der Iterable an, wie gezeigt:

python-lambda-mit-karte

Wir erstellen eine Liste nums und verwenden die Funktion map(), um eine neue Liste zu erstellen, die das Quadrat jeder Zahl in der Liste nums enthält. Beachten Sie die Verwendung der Lambda-Funktion, um die Quadrierungsoperation zu definieren.

>>> nums = [4,5,6,9]
>>> list(map(lambda num:num*num,nums))
[16, 25, 36, 81]

Da die Funktion map() ein Map-Objekt zurückgibt, sollten wir es in eine Liste umwandeln.

▶️ Sehen Sie sich dieses Tutorial zur map()-Funktion in Python an.

#2. Verwendung von Lambda mit filter()

Lassen Sie uns nums, eine Liste von Zahlen, definieren:

>>> nums = [4,5,6,9]

Nehmen wir an, Sie möchten diese Liste filtern und nur die ungeraden Zahlen beibehalten.

Dazu können Sie die integrierte Funktion filter() von Python verwenden.

Die Funktion filter() nimmt eine Bedingung und eine Iterierbar auf: filter(Bedingung, Iterable). Das Ergebnis enthält nur die Elemente in der ursprünglichen Iterablen, die die Bedingung erfüllen. Sie können das zurückgegebene Objekt in eine Python-Iterable wie z.B. list umwandeln.

python-lambda-with-filter

Um alle geraden Zahlen herauszufiltern, behalten wir nur die ungeraden Zahlen bei. Der Lambda-Ausdruck sollte auch lauten lambda num: num%2!=0. Die Menge num%2 ist der Rest, wenn num durch 2 geteilt wird.

  • num%2!=0 ist True, wenn num ungerade ist, und
  • num%2!=0 ist Falsch, wenn num gerade ist.
>>> nums = [4,5,6,9]
>>> list(filter(lambda num:num%2!=0,nums))
[5, 9]

#3. Verwendung von Lambda mit reduce()

Die Funktion reduce() nimmt eine Iterable und eine Funktion auf. Sie reduziert die Iterable, indem sie die Funktion iterativ auf die Elemente der Iterable anwendet.

python-lambda-mit-reduce

Um die Funktion reduce() zu verwenden, müssen Sie sie aus dem in Python integrierten Modul functools importieren:

>>> from functools import reduce

Lassen Sie uns die Funktion reduce() verwenden, um die Summe alle Zahlen in der Liste nums zu berechnen. Wir definieren einen Lambda-Ausdruck: lambda num1,num2:num1 num2, als reduzierende Summenfunktion.

Die Reduktionsoperation wird wie folgt ablaufen: 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

Sie können Lambda-Funktionen nicht nur mit eingebauten Python-Funktionen wie map(), filter() und reduce() verwenden, sondern auch, um eingebaute Funktionen und Methoden für die Sortierung anzupassen.

img

#1. Sortieren von Python-Listen

Wenn Sie mit Python-Listen arbeiten, müssen Sie diese oft nach bestimmten Kriterien sortieren. Um Python-Listen an Ort und Stelle zu sortieren, können Sie die eingebaute sort() -Methode auf sie anwenden. Wenn Sie eine sortierte Kopie der Liste benötigen, können Sie die Funktion sorted() verwenden.

Die Syntax zur Verwendung der Python-Funktion sorted() lautet sorted(iterable, key=...,reverse= True | False).

- Der Parameter key wird verwendet, um die Sortierung anzupassen.
- Der Parameter reverse kann auf True oder False gesetzt werden; der Standardwert ist False.

Beim Sortieren von Listen mit Zahlen und Zeichenketten wird standardmäßig in aufsteigender bzw. alphabetischer Reihenfolge sortiert. Es kann jedoch vorkommen, dass Sie ein eigenes Kriterium für die Sortierung festlegen möchten.

Betrachten Sie die folgende Liste Früchte. Angenommen, Sie möchten eine sortierte Kopie der Liste erhalten. Sie sollten die Zeichenketten nach der Anzahl der Vorkommen von 'p' in ihnen sortieren - in absteigender Reihenfolge.

>>> fruits = ['apple','pineapple','grapes','mango']

Jetzt ist es an der Zeit, den optionalen Parameter key zu verwenden. Eine Zeichenkette ist in Python eine Iterable und um die Anzahl der Vorkommen eines Zeichens in ihr zu ermitteln, können Sie die eingebaute Methode .count() verwenden. Außerdem setzen wir den Schlüssel auf lambda x:x.count('p'), so dass die Sortierung auf der Anzahl des Vorkommens von 'p' in der Zeichenkette basiert.

>>> 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, nach dem sortiert werden soll, ist die Anzahl der Vorkommen des Zeichens 'p', und er ist als Lambda-Ausdruck definiert.
  • Da wir den Parameter reverse auf True gesetzt haben, erfolgt die Sortierung in der absteigenden Reihenfolge der Anzahl der Vorkommen von 'p'.

In der Liste der Früchte enthält 'Ananas' 3 Vorkommen von 'p' und die Zeichenketten 'Apfel', 'Weintrauben' und 'Mango' enthalten 2, 1 bzw. 0 Vorkommen von 'p'.

Stabile Sortierung verstehen

Betrachten Sie ein anderes Beispiel. Für dasselbe Sortierkriterium haben wir die Liste der Früchte neu definiert. Hier kommt 'p' in den Zeichenketten 'Apfel' und 'Weintrauben' zweimal bzw. einmal vor. Und in den Zeichenketten '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 steht 'Mango' vor 'Melone', obwohl beide nicht das Zeichen 'p' enthalten. Aber warum ist dies der Fall? Die Funktion sorted() führt eine stabile Sortierung durch. Wenn auch die Anzahl von 'p' bei zwei Zeichenketten gleich ist, bleibt die Reihenfolge der Elemente in der ursprünglichen Obstliste erhalten.

Als schnelle Übung tauschen Sie die Positionen von 'Mango' und 'Melone' in der Obstliste aus, 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 Lambdas auch beim Sortieren von Python-Wörterbüchern verwenden. Betrachten Sie das folgende Wörterbuch price_dict, die Artikel und deren Preise enthält.

>>> price_dict = {
... 'Milch':10,
... 'Honig':15,
... 'Brot':7,
... 'Süßigkeiten':3
... }

Um die Schlüssel-Wert-Paare eines Wörterbuchs als eine Liste von Tupeln zu erhalten, können Sie die eingebaute Wörterbuchmethode .items() verwenden:

>>> price_dict_items = price_dict.items()
dict_items([('Milch', 10), ('Honig', 15), ('Brot', 7), ('Süßigkeiten', 3)])

In Python folgen alle Iterablen: Listen, Tupel, Strings und mehr, der Null-Indexierung. Das erste Element steht also bei Index 0, das zweite Element bei Index 1 und so weiter.

Wir möchten nach dem Wert sortieren, d.h. nach dem Preis der einzelnen Artikel im Wörterbuch. In jedem Tupel in der Liste price_dict_items ist das Element bei Index 1 der Preis. Außerdem setzen wir den Schlüssel auf lambda x:x<x>[1]</x>, um das Wörterbuch nach dem Element mit dem Index 1, dem Preis, zu sortieren.

>>> dict(sorted(preis_dict_items,key=lambda x:x<x>[1]</x>))
{'Süßigkeiten': 3, 'Brot': 7, 'Milch': 10, 'Honig': 15}

In der Ausgabe wurden die Wörterbucheinträge in aufsteigender Reihenfolge der Preise sortiert: beginnend mit 'Candy', mit einem Preis von 3 Einheiten bis hin zu 'Honey', mit einem Preis von 15 Einheiten.

▶️ Wenn Sie mehr erfahren möchten, lesen Sie diese ausführliche Anleitung zum Sortieren eines Python-Wörterbuchs nach Schlüssel und Wert.

Zusammenfassend

Und da haben Sie es! Sie haben gelernt, wie man Lambda-Funktionen definiert und sie effektiv mit anderen eingebauten Python-Funktionen einsetzt. Hier ist eine Zusammenfassung der wichtigsten Erkenntnisse:

  • In Python sind Lambdas anonyme Funktionen, die mehrere Argumente entgegennehmen und einen Wert zurückgeben können; der Ausdruck, der ausgewertet wird, um diesen Rückgabewert zu erzeugen, sollte aus einer Zeile Code bestehen. Sie können verwendet werden, um kleine Funktionsdefinitionen prägnanter zu gestalten.
  • Um die Lambda-Funktion zu definieren, können Sie die Syntax verwenden: Lambda Parameter: Rückgabewert.
  • Einige der wichtigsten Anwendungsfälle sind die Verwendung mit den Funktionen map(), filter() und reduce() sowie als Schlüsselparameter zur Anpassung der Sortierung von Python-Iterables.

Als nächstes lernen Sie, wie man in Python eine Bodenteilung durchführt. Außerdem erfahren Sie mehr über die Python-Funktion schlafen.

  • Bala Priya C
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder