In Python bedeutet eine anonyme Funktion, dass eine Funktion ohne Namen ist. Wie wir bereits wissen, wird das Schlüsselwort def verwendet, um eine normale Funktion in Python zu definieren. In ähnlicher Weise wird das Schlüsselwort lambda verwendet, um eine anonyme Funktion in Python zu definieren. Es hat die folgende Syntax: 

Syntax: Lambda-Argumente: Ausdruck
  • Diese Funktion kann beliebig viele Argumente enthalten, jedoch nur einen Ausdruck, der ausgewertet und zurückgegeben wird.
  • Es steht frei, Lambda-Funktionen überall dort zu verwenden, wo Funktionsobjekte benötigt werden.
  • Sie müssen wissen, dass Lambda-Funktionen syntaktisch auf einen einzelnen Ausdruck beschränkt sind.
  • Es hat verschiedene Verwendungszwecke in bestimmten Bereichen der Programmierung neben anderen Arten von Ausdrücken in Funktionen.

Schauen wir uns dieses Beispiel an und versuchen wir, den Unterschied zwischen einer normalen def-definierten Funktion und einer Lambda-Funktion zu verstehen . Dies ist ein Programm, das den Cube eines bestimmten Werts zurückgibt:  

def cube(y): 
    return y*y*y 
  
lambda_cube = lambda y: y*y*y 
  
print(cube(5)) 
  
print(lambda_cube(5)) 

Ausgabe:

125
125

Wie wir im obigen Beispiel sehen können, verhalten sich sowohl die Funktion cube() als auch die Funktion lambda_cube() gleich und wie beabsichtigt. Lassen Sie uns das obige Beispiel etwas genauer analysieren:

  • Ohne Lambda: Hier geben beide den Würfel einer bestimmten Zahl zurück. Bei Verwendung von def mussten wir jedoch eine Funktion mit einem Namenswürfel definieren und einen Wert an diesen übergeben. Nach der Ausführung mussten wir auch das Ergebnis zurückgeben, von dem aus die Funktion mit dem Schlüsselwort return aufgerufen wurde .
  • Verwenden von Lambda: Die Lambda-Definition enthält keine "return" -Anweisung, sondern immer einen Ausdruck, der zurückgegeben wird. Wir können eine Lambda-Definition auch überall dort platzieren, wo eine Funktion erwartet wird, und wir müssen sie überhaupt keiner Variablen zuweisen. Dies ist die Einfachheit der Lambda-Funktionen.

Lambda-Funktionen können zusammen mit integrierten Funktionen wie filter(), map() und redu() verwendet werden.



Verwenden von Lambda() Funktion mit Filter()

Die Funktion filter() in Python verwendet eine Funktion und eine Liste als Argumente. Dies bietet eine elegante Möglichkeit, alle Elemente einer Sequenz „Sequenz“ herauszufiltern, für die die Funktion True zurückgibt. Hier ist ein kleines Programm, das die ungeraden Zahlen aus einer Eingabeliste zurückgibt: 
 

Beispiel 1:

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 
  
final_list = list(filter(lambda x: (x%2 != 0) , li)) 
print(final_list) 

Ausgabe:

[5, 7, 97, 77, 23, 73, 61]

Beispiel 2:

ages = [13, 90, 17, 59, 21, 60, 5] 
  
adults = list(filter(lambda age: age>18, ages)) 
  
print(adults)

Ausgabe:

[90, 59, 21, 60]

Verwenden der Lambda() -Funktion mit map()

Die map() -Funktion in Python verwendet eine Funktion und eine Liste als Argument. Die Funktion wird mit einer Lambda-Funktion und einer Liste aufgerufen, und es wird eine neue Liste zurückgegeben, die alle von dieser Funktion zurückgegebenen Lambda-modifizierten Elemente für jedes Element enthält. Beispiel: 
 

Beispiel 1:

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 
  
final_list = list(map(lambda x: x*2, li)) 
print(final_list) 

Ausgabe:



[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

Beispiel 2:

animals = ['dog', 'cat', 'parrot', 'rabbit'] 
  
uppered_animals = list(map(lambda animal: str.upper(animal), animals)) 
  
print(uppered_animals)

Ausgabe:

['DOG', 'CAT', 'PARROT', 'RABBIT']

Verwenden von Lambda() Funktion mit Reduzieren()

Die Funktion redu() in Python verwendet eine Funktion und eine Liste als Argument. Die Funktion wird mit einer Lambda-Funktion aufgerufen und ein iterierbares und ein neues reduziertes Ergebnis zurückgegeben. Dies führt eine sich wiederholende Operation über die Paare des iterablen durch. Die Funktion redu() gehört zum   Modul functools

Beispiel 1:

  
from functools import reduce
li = [5, 8, 10, 20, 50, 100] 
sum = reduce((lambda x, y: x + y), li) 
print (sum) 

Ausgabe:

193

Hier werden die Ergebnisse der beiden vorherigen Elemente zum nächsten Element hinzugefügt und dies dauert bis zum Ende der Liste wie (((((5 + 8) +10) +20) +50) +100).

Beispiel 2:

  
import functools  
  
lis = [ 1 , 3, 5, 6, 2, ]  
  
print ("The maximum element of the list is : ",end="")  
print (functools.reduce(lambda a,b : a if a > b else b,lis))  

Ausgabe:

Das maximale Element der Liste ist: 6

Dieser Artikel wurde von Chinmoy Lenka verfasst . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel mit Contrib.geeksforgeeks.org schreiben oder Ihren Artikel an Contribute@geeksforgeeks.org senden . Sehen Sie sich Ihren Artikel auf der GeeksforGeeks-Hauptseite an und helfen Sie anderen Geeks.
Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten.