Verwendung von Lambda mit integrierten Funktionen
Lambda-Funktionen werden besonders leistungsfähig, wenn sie mit den integrierten Funktionen von Python wie map()
, filter()
und sorted()
kombiniert werden. Diese Kombinationen ermöglichen es Ihnen, effizienten Code für Datentransformation und -manipulation zu schreiben.
Die map()
-Funktion mit Lambda
Die map()
-Funktion wendet eine gegebene Funktion auf jedes Element in einem Iterable (z. B. einer Liste) an und gibt ein Map-Objekt mit den Ergebnissen zurück.
-
Erstellen Sie eine neue Datei mit dem Namen lambda_builtin.py
im Verzeichnis /home/labex/project
.
-
Fügen Sie den folgenden Code hinzu, um die Verwendung von map()
mit Lambda zu demonstrieren:
## Verwendung von map() mit einer Lambda-Funktion, um jede Zahl in einer Liste zu quadrieren
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print("Original numbers:", numbers)
print("Squared numbers:", squared_numbers)
- Führen Sie Ihren Code aus:
python3 ~/project/lambda_builtin.py
Sie sollten sehen:
Original numbers: [1, 2, 3, 4, 5]
Squared numbers: [1, 4, 9, 16, 25]
Die filter()
-Funktion mit Lambda
Die filter()
-Funktion erstellt ein neues Iterable mit Elementen, die eine Bedingung erfüllen (Funktion gibt True zurück).
- Fügen Sie den folgenden Code zu Ihrer Datei
lambda_builtin.py
hinzu:
## Verwendung von filter() mit einer Lambda-Funktion, um gerade Zahlen zu finden
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("All numbers:", numbers)
print("Even numbers:", even_numbers)
## Verwendung von filter(), um Namen zu finden, die mit 'J' beginnen
names = ["Alice", "Bob", "John", "Jane", "Michael", "Jessica"]
j_names = list(filter(lambda name: name.startswith('J'), names))
print("All names:", names)
print("Names starting with J:", j_names)
- Führen Sie Ihren aktualisierten Code aus:
python3 ~/project/lambda_builtin.py
Sie sollten zusätzliche Ausgabe sehen:
All numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Even numbers: [2, 4, 6, 8, 10]
All names: ['Alice', 'Bob', 'John', 'Jane', 'Michael', 'Jessica']
Names starting with J: ['John', 'Jane', 'Jessica']
Die sorted()
-Funktion mit Lambda
Die sorted()
-Funktion ermöglicht es Ihnen, Iterables mithilfe einer benutzerdefinierten Schlüssel-Funktion (key function) zu sortieren, wobei Lambda-Funktionen sehr nützlich sind.
- Fügen Sie den folgenden Code zu Ihrer Datei
lambda_builtin.py
hinzu:
## Verwendung von sorted() mit Lambda, um nach dem zweiten Element von Tupeln zu sortieren
pairs = [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
sorted_by_second = sorted(pairs, key=lambda pair: pair[1])
print("Original pairs:", pairs)
print("Sorted by second element:", sorted_by_second)
## Verwendung von sorted() mit Lambda, um Strings nach Länge zu sortieren
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
sorted_by_length = sorted(words, key=lambda word: len(word))
print("Original words:", words)
print("Sorted by length:", sorted_by_length)
- Führen Sie Ihren aktualisierten Code aus:
python3 ~/project/lambda_builtin.py
Sie sollten zusätzliche Ausgabe sehen:
Original pairs: [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
Sorted by second element: [(4, 1), (3, 2), (1, 5), (5, 7), (2, 9)]
Original words: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
Sorted by length: ['fig', 'date', 'apple', 'cherry', 'banana', 'elderberry']
Kombinieren mehrerer Lambda-Funktionen
Sie können auch mehrere Operationen mithilfe von Lambda-Funktionen verketten oder kombinieren:
- Fügen Sie den folgenden Code zu Ihrer Datei
lambda_builtin.py
hinzu:
## Kombinieren von map und filter mit Lambda-Funktionen
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## Zuerst die Zahlen quadrieren, dann nach Werten größer als 20 filtern
result = list(filter(lambda x: x > 20, map(lambda x: x**2, numbers)))
print("Original numbers:", numbers)
print("Squared numbers > 20:", result)
- Führen Sie Ihren aktualisierten Code aus:
python3 ~/project/lambda_builtin.py
Sie sollten zusätzliche Ausgabe sehen:
Original numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Squared numbers > 20: [25, 36, 49, 64, 81, 100]
Lambda-Funktionen mit integrierten Funktionen wie map()
, filter()
und sorted()
bieten eine leistungsstarke Möglichkeit, Daten mit minimalem Code zu verarbeiten. Im nächsten Schritt werden wir weitere praktische Anwendungen von Lambda-Funktionen untersuchen.