Wat zijn Lambda-functies en hoe deze te gebruiken?



Leer Lambda-functies van Python samen met het verschil tussen normale functies en lambda-functies en hoe ze kunnen worden gebruikt in filter (), map (), reduce ().

Een naam is een conventie die wordt gebruikt om naar een entiteit te verwijzen of deze aan te spreken. Bijna alles om ons heen heeft een naam. Ook de programmeerwereld verloopt in overeenstemming hiermee. Maar is het een must om alles te noemen? Of heb je iets dat gewoon ‘anoniem’ is? Het antwoord is ja. ' biedt Lambda-functies, ook wel anonieme functies genoemd, die in feite naamloos zijn. Laten we dus verder gaan om meer te weten te komen over deze ‘Anonieme Mysteries’ van Python, in de volgende volgorde.

Dus laten we beginnen :)





Waarom Python Lambda-functies gebruiken?


Het belangrijkste doel van anonieme functies komt in beeld wanneer u een bepaalde functie maar één keer nodig heeft. Ze kunnen worden gemaakt waar ze ook nodig zijn. Om deze reden staan ​​Python Lambda-functies ook bekend als wegwerpfuncties die worden gebruikt in combinatie met andere vooraf gedefinieerde functies zoals filter (), map (), enz. Deze functies helpen het aantal regels van uw code te verminderen in vergelijking met normaal .

Om dit te bewijzen, gaan we verder en leren we meer over Python Lambda-functies.



Wat zijn Python Lambda-functies?


Python Lambda-functies zijn functies die geen naam hebben. Ze staan ​​ook bekend als anonieme of naamloze functies. Het woord ‘lambda’ is geen naam, maar een trefwoord. Dit sleutelwoord geeft aan dat de functie die volgt anoniem is.

Nu u weet waar deze anonieme functies naar verwijzen, gaan we verder om te zien hoe u deze Python Lambda-functies schrijft.

Hoe Lambda-functies in Python te schrijven?

Een Lambda-functie wordt gemaakt met behulp van de lambda-operator en de syntaxis is als volgt:



SYNTAXIS:

lambda-argumenten: uitdrukking

Python lambda-functie kan een willekeurig aantal argumenten hebben, maar het duurt slechts een uitdrukking. De invoer of argumenten kunnen beginnen bij 0 en tot elke limiet gaan. Net als bij alle andere functies, is het prima om lambda-functies zonder invoer te hebben. Daarom kunt u lambda-functies in een van de volgende indelingen hebben:

VOORBEELD:

lambda: 'Specificeer het doel'

Hier accepteert de lambda-functie geen argumenten.

VOORBEELD:

lambda eeneen: “Specificeer het gebruik van eeneen'

Hier neemt lambda één invoer die een iseen.

opdrachtregelargumenten in Java-voorbeeldcode

Evenzo kunt u lambda a hebbeneen, naar2, naar3..naarn.

Laten we een paar voorbeelden nemen om dit te demonstreren:

VOORBEELD 1:

a = lambda x: x * x print (a (3))

UITGANG: 9

VOORBEELD 2:

a = lambda x, y: x * y print (a (3,7))

UITGANG: eenentwintig

Zoals u kunt zien, heb ik hier twee voorbeelden genomen. Het eerste voorbeeld maakt gebruik van de lambda-functie met slechts één uitdrukking, terwijl het tweede voorbeeld twee argumenten heeft die eraan zijn doorgegeven. Houd er rekening mee dat beide functies een enkele uitdrukking hebben, gevolgd door de argumenten. Daarom kunnen lambda-functies niet worden gebruikt als u expressies met meerdere regels nodig hebt.

Aan de andere kant kunnen normale python-functies een willekeurig aantal instructies in hun functiedefinities opnemen.

Hoe verkleinen anonieme functies de grootte van de code?

Voordat we de benodigde hoeveelheid code vergelijken, moeten we eerst de syntaxis van en vergelijk het met die van lambda-functies die eerder zijn beschreven.

Elke normale functie in Python wordt gedefinieerd met behulp van een def trefwoord als volgt:

SYNTAXIS:

def functienaam (parameters):
verklaring (en)

Zoals je kunt zien, is de hoeveelheid code die nodig is voor een lambda-functie aanzienlijk minder dan die van normale functies.

Laten we het voorbeeld dat we eerder namen herschrijven met normale functies nu.

VOORBEELD:

def my_func (x): retourneer x * x print (my_func (3))

UITGANG: 9

Zoals je kunt zien, hebben we in het bovenstaande voorbeeld een return-statement nodig binnen de my_func om de waarde van het kwadraat van 3 te evalueren. In tegenstelling hiermee maakt de lambda-functie geen gebruik van deze return-instructie, maar de body van de anonieme functie wordt op dezelfde regel geschreven als de functie zelf, na de dubbele punt. Daarom is de grootte van de functie kleiner dan die van my_func.

Lambda-functies in de bovenstaande voorbeelden worden echter aangeroepen met behulp van een andere een. Dit wordt gedaan omdat deze functies naamloos zijn en er daarom een ​​naam moet worden aangeroepen. Maar dit feit lijkt misschien verwarrend waarom dergelijke naamloze functies worden gebruikt als u eigenlijk een andere naam moet toewijzen om ze te bellen? En natuurlijk, na het toekennen van de naam a aan mijn functie, blijft deze niet meer naamloos! Rechtsaf?

Het is een legitieme vraag, maar het punt is dat dit niet de juiste manier is om deze anonieme functies te gebruiken.

Anonieme functies kunnen het beste binnen andere worden gebruikt hogere orde functies die ofwel een functie als argument gebruiken of een functie retourneren als de uitvoer. Om dit te demonstreren, gaan we nu verder naar ons volgende onderwerp.

Python Lambda-functies binnen door de gebruiker gedefinieerde functies:

Zoals hierboven vermeld, worden lambda-functies gebruikt binnen andere functies om het beste voordeel te markeren.

Het volgende voorbeeld bestaat uit new_func wat een normale python-functie is waaraan één argument x moet doorgegeven worden. Dit argument wordt vervolgens toegevoegd aan een onbekend argument y dat wordt geleverd via de lambda-functie.

VOORBEELD:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

UITGANG:

6
5
Zoals je kunt zien, wordt in het bovenstaande voorbeeld de lambda-functie die aanwezig is in new_func aangeroepen wanneer we gebruik maken van new_func (). Elke keer kunnen we afzonderlijke waarden aan de argumenten doorgeven.

Nu u heeft gezien hoe u anonieme functies binnen functies van hogere orde kunt gebruiken, gaan we nu verder om een ​​van de meest populaire toepassingen te begrijpen, namelijk binnen de methoden filter (), map () en reduce ().

Hoe anonieme functies te gebruiken binnen filter (), map () en reduce ():

Anonieme functies binnen filter():

filter():

De methode filter () wordt gebruikt om de gegeven iterables (lijsten, sets, enz.) Te filteren met behulp van een andere functie, doorgegeven als argument, om te testen of alle elementen waar of onwaar zijn.

hoe nummer in java om te keren

De syntaxis van deze functie is:

SYNTAXIS:

filter (functie, itereerbaar)

Beschouw nu het volgende voorbeeld:

VOORBEELD:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

UITGANG: [6]

Hier is my_list een lijst met itereerbare waarden die wordt doorgegeven aan de filterfunctie. Deze functie gebruikt de lambda-functie om te controleren of er waarden in de lijst staan, die gelijk zijn aan 2 wanneer gedeeld door 3. De uitvoer bestaat uit een lijst die voldoet aan de uitdrukking die aanwezig is in de anonieme functie.

kaart():

De functie map () in Python is een functie die een bepaalde functie toepast op alle iterables en een nieuwe lijst retourneert.

SYNTAXIS:

map (functie, itereerbaar)

Laten we een voorbeeld nemen om het gebruik van de lambda-functies binnen de map () -functie te demonstreren:

VOORBEELD:

my_list = [2,3,4,5,6,7,8] new_list = list (map (lambda a: (a / 3! = 2), li)) print (new_list)

UITGANG:

[Waar, waar, waar, waar, niet waar, waar, waar]

De bovenstaande uitvoer laat zien dat, wanneer de waarde van de iterables niet gelijk is aan 2 wanneer gedeeld door 3, het geretourneerde resultaat True moet zijn. Daarom geeft het voor alle elementen in my_list true terug, behalve de waarde 6 wanneer de voorwaarde verandert in False.

verminderen():

De functie reduce () wordt gebruikt om een ​​andere functie toe te passen op een lijst met elementen die als parameter eraan worden doorgegeven en die uiteindelijk een enkele waarde retourneert.

De syntaxis van deze functie is als volgt:

SYNTAXIS:

verminderen (functie, volgorde)

VOORBEELD:

van functools import verminderen verminderen (lambda a, b: a + b, [23,21,45,98])

Het bovenstaande voorbeeld wordt weergegeven in de volgende afbeelding:

verminderen-python lambda-edureka

UITGANG: 187

De output laat duidelijk zien dat alle elementen van de lijst dat zijn voortdurend toegevoegd om het uiteindelijke resultaat te retourneren.

Hiermee eindigen we dit artikel over ‘Python Lambda’. Ik hoop dat je duidelijk bent met alles wat met je is gedeeld. Zorg ervoor dat je zoveel mogelijk oefent en terugkeert naar je ervaring.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze “Python Lambda” -blog en we nemen zo snel mogelijk contact met je op.

beste java ide voor linux

Om diepgaande kennis op te doen over Python en de verschillende applicaties, kunt u zich live inschrijven met 24/7 ondersteuning en levenslange toegang.