Mehrere Argumente in Lambda-Funktionen in Python übergeben

Vaibhav Vaibhav 30 Januar 2023
  1. Lambda-Funktionen in Python
  2. Mehrere Argumente in Lambda-Funktionen übergeben
Mehrere Argumente in Lambda-Funktionen in Python übergeben

Die Lambda-Formen oder Lambda-Ausdrücke sind anonyme Funktionen in Python. Es handelt sich um Inline-Funktionen, die mit dem reservierten Schlüsselwort lambda in Python erstellt werden können.

In diesem Artikel werden die Lambda-Funktionen in Python behandelt und erfahren, wie Sie mit mehreren Argumenten darin umgehen.

Lambda-Funktionen in Python

Eine Lambda-Funktion besteht aus drei Teilen: dem Schlüsselwort lambda, den Parametern bzw. den gebundenen Variablen und dem Funktionsrumpf. Der Funktionsrumpf kann nur einen einzigen Python-Ausdruck haben, da diese Funktionen inline sind.

Diese Funktionen können nicht nur sofort aufgerufen, sondern auch wie andere reguläre Python-Funktionen verwendet werden.

Lambda-Funktionen haben die folgende Syntax:

lambda < parameters comma seperated >: expression

Beachten Sie, dass der Ausdruck im Funktionsrumpf einen Wert zurückgeben sollte. Wenn der Ausdruck keinen Wert zurückgibt, ist das Ergebnis einer Lambda-Funktion ein None-Wert.

Für den Inline-Aufruf setzen wir die Lambda-Funktion in Klammern und platzieren die Werte für die Argumente daneben in Klammern.

Unten ist die Syntax dafür:

(lambda < parameters comma seperated > : expression) ( < parameters comma seperated > )

Um diese Lambda-Funktionen zu verstehen, erstellen wir eine Lambda-Funktion, die zwei Zahlen multipliziert. Da wir besprochen haben, dass diese Funktionen sofort aufgerufen und als reguläre Python-Funktionen verwendet werden können, enthalten die Beispiele beide Versionen der Lambda-Funktionen.

Das Multiplikationsbeispiel finden Sie im folgenden Code:

# Regular function calls
def multiply(a, b):
    return a * b


print(multiply(1, 2))
print(multiply(10, 5))
print(multiply(10.5, 9.3))
print(multiply(0.945, -5.645))
print(multiply(1000e9, 0), end="\n\n")

# Inline invocation
print((lambda a, b: a * b)(1.1, 1.2))
print((lambda a, b: a * b)(10, 5))
print((lambda a, b: a * b)(10.5, 9.3))
print((lambda a, b: a * b)(0.945, -5.645))
print((lambda a, b: a * b)(1000e9, 0))

Ausgabe:

2
50
97.65
-5.334524999999999
0.0
1.32
50
97.65
-5.334524999999999
0.0

Um es noch genauer zu machen, betrachten wir drei weitere Beispiele, in denen wir ungerade Werte aus einer Liste von Zahlen filtern, Quadrate von Elementen einer Liste berechnen und Kubikwurzeln von Elementen einer Liste berechnen.

Das erste Beispiel finden Sie im folgenden Python-Code:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def filter_odd(a):
    return a % 2 != 0


print(list(filter(filter_odd, x)))
print(list(filter(filter_odd, y)))
print(list(filter(filter_odd, z)), end="\n\n")

# Inline invocation
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(x))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(y))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(z))

Ausgabe:

[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]

[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]

Das zweite Beispiel finden Sie im folgenden Python-Code-Snippet:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def square(a):
    return a ** 2


print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")

# Inline invocation
print((lambda array: list(map(lambda a: a ** 2, array)))(x))
print((lambda array: list(map(lambda a: a ** 2, array)))(y))
print((lambda array: list(map(lambda a: a ** 2, array)))(z))

Ausgabe:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]

Das dritte Beispiel finden Sie im folgenden Python-Code-Snippet:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def square(a):
    return a ** (1 / 3)


print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")

# Inline invocation
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(x))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(y))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(z))

Ausgabe:

[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]

[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]

Mehrere Argumente in Lambda-Funktionen übergeben

Um mehrere Argumente in der Lambda-Funktion zu übergeben, müssen wir alle Parameter durch Kommas getrennt erwähnen. Lassen Sie uns dies an einem Beispiel verstehen.

Wir erstellen eine Lambda-Funktion, die drei Parameter benötigt; eine Liste und zwei ganze Zahlen. Die Lambda-Funktion addiert die erste ganze Zahl und subtrahiert die zweite ganze Zahl von jedem Listenelement.

Beachten Sie dazu den folgenden Python-Code:

x1 = [1, 8, 27, 64, 125, 216, 343, 512]
x2 = 5
x3 = 6
y1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
y2 = 4
y3 = 1
z1 = [78, 9797, 97, 985, 75473, 2845, 74]
z2 = 99
z3 = 99

# Regular function calls


def modify(a, b, c):
    return [x + b - c for x in a]


print(modify(x1, x2, x3))
print(modify(y1, y2, y3))
print(modify(z1, z2, z3), end="\n\n")

# Inline invocation
print((lambda a, b, c: [x + b - c for x in a])(x1, x2, x3))
print((lambda a, b, c: [x + b - c for x in a])(y1, y2, y3))
print((lambda a, b, c: [x + b - c for x in a])(z1, z2, z3))

Ausgabe:

[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]

[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python Function

Verwandter Artikel - Python Lambda Function