En nybegynnerguide for å forstå Python Lambda -funksjoner

En nybegynnerguide for å forstå Python Lambda -funksjoner

Lambdas i Python er en av de mest nyttige, viktige og interessante funksjonene å vite om. Dessverre er de også enkle å misforstå og ta feil.





I denne artikkelen skal vi forklare alt du trenger å vite om disse mystiske funksjonene, hvordan du bruker dem og hvorfor de er nyttige.





Før du dykker ned i disse praktiske eksemplene, kan det være lurt å sette opp et virtuelt Python -miljø. Hvis du ikke engang vil gjøre det, bør du i det minste prøve disse eksemplene med et interaktivt online Python -skall .





Hva er en Lambda i Python?

En lambda er ganske enkelt en måte å definere en funksjon i Python. De er noen ganger kjent som 'lambda -operatører' eller 'lambda -funksjoner'.

Hvis du har brukt Python før, har du sannsynligvis definert funksjonene dine med def søkeord, og det har fungert bra for deg så langt. Så hvorfor er det en annen måte å gjøre det samme på?



Forskjellen er at lambda -funksjoner er anonyme. Det betyr at de er funksjoner som ikke trenger å bli navngitt. De brukes til å lage små, engangsfunksjoner i tilfeller der en 'ekte' funksjon ville være for stor og omfangsrik.

Lambdas returnerer et funksjonsobjekt, som kan tilordnes en variabel. Lambdas kan ha et hvilket som helst antall argumenter, men de kan bare ha ett uttrykk. Du kan ikke kalle andre funksjoner inne i lambdas.





Den vanligste bruken for lambda-funksjoner er i kode som krever en enkel enlinjefunksjon, der det ville være overkill å skrive en fullstendig normal funksjon. Dette er dekket mer detaljert nedenfor under 'Hva med kart, filter og reduser?'.

Hvordan bruke Lambdas i Python

Før vi ser på en lambda -funksjon, la oss se på en super grunnleggende funksjon som definerte den 'tradisjonelle' måten:





def add_five(number):
return number + 5

print(add_five(number=4))

Denne funksjonen er veldig grunnleggende, men den tjener til å illustrere lambdas. Din kan være mer kompleks enn dette. Denne funksjonen legger til fem til et hvilket som helst nummer som sendes til det gjennom Nummer parameter.

Slik ser det ut som en lambda -funksjon:

add_five = lambda number: number + 5

print(add_five(number=4))

Snarere enn å bruke def , ordet lambda benyttes. Ingen parentes kreves, men noen ord etter lambda søkeord er opprettet som parametere. Tykktarmen brukes til å skille parametrene og uttrykket. I dette tilfellet er uttrykket nummer + 5 .

Det er ikke nødvendig å bruke komme tilbake søkeord --- lambda gjør dette for deg automatisk.

Slik lager du en lambda -funksjon med to argumenter:

hvordan lage tekstur i photoshop
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Hvis du fortsatt er usikker på poenget med lambdas, vil neste avsnitt dykke ned og hjelpe deg med å se lyset.

Python Lambdas med kart, filter og reduser

Python -kjernebiblioteket har tre metoder kalt kart , redusere , og filter . Disse metodene er muligens de beste grunnene til å bruke lambda -funksjoner.

De kart funksjon forventer to argumenter: en funksjon og en liste. Den tar den funksjonen og bruker den på hvert element i listen, og returnerer listen over modifiserte elementer som et kartobjekt. De liste funksjonen brukes til å konvertere det resulterende kartobjektet til en liste igjen.

Slik bruker du kart uten lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Denne kartfunksjonen er ganske praktisk, men den kan være bedre. de add_five funksjon sendes inn som et argument, men hva om du ikke vil opprette en funksjon hver gang du bruker kart? Du kan bruke en lambda i stedet!

Slik ser den samme koden ut, bare med funksjonen erstattet av en lambda:

datamaskinen min sier at plugget ikke lades
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Som du kan se, hele add_five funksjonen er ikke lenger nødvendig. I stedet brukes lambda -funksjonen for å holde ting ryddig.

Med filter funksjon, er prosessen omtrent den samme. Filter tar en funksjon og bruker den på alle elemen i en liste og opprettet en ny liste med bare elementene som gjorde at funksjonen returnerte True.

Først, uten lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Det er ikke noe galt med denne koden, men den blir litt lang. La oss se hvor mange linjer en lambda kan fjerne:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Lambda -funksjonen har erstattet behovet for helheten større_ enn_ten_func ! Og det er gjort i fem enkle ord. Det er derfor lambdas er kraftige: de reduserer rot for enkle oppgaver.

Til slutt, la oss se på redusere . Reduser er en annen kul Python -funksjon. Den bruker en rullende beregning for alle elementene i en liste. Du kan bruke dette til å telle opp en sum, eller multiplisere alle tallene sammen:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Dette eksemplet må importeres redusere fra funksjonsverktøy modul, men ikke bekymre deg, functools -modulen er en del av Python -kjernebiblioteket.

Historien er veldig den samme med en lambda, det er ikke behov for en funksjon:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Ting å passe på med Python Lambdas

Disse eksemplene har vist hvor enkle lambda -funksjoner er, sammen med kart, filtrering og reduksjon, fra Python -kjernebiblioteket. Likevel er det noen få bruksområder der lambda -funksjoner ikke hjelper.

Hvis du gjør noe mer enn en grunnleggende oppgave, eller vil ringe andre metoder, bruker du en normal funksjon. Lambdas er gode for anonyme funksjoner, men de må bare ha et enkelt uttrykk. Hvis din lambda begynner å ligne et vanlig uttrykk, er det sannsynligvis på tide å refaktorere til en dedikert metode.

For flere tips, sjekk vår guide til objektorientert programmering i Python og sjekk vår FAQ -guide for Python -nybegynnere.

Dele Dele kvitring E -post 3 måter å sjekke om en e -post er ekte eller falsk

Hvis du har mottatt en e -post som ser litt tvilsom ut, er det alltid best å sjekke ektheten. Her er tre måter å fortelle om en e -post er ekte.

Les neste
Relaterte temaer
  • Programmering
  • Python
  • Opplæringsprogrammer for koding
Om forfatteren Joe Coburn(136 artikler publisert)

Joe er utdannet innen informatikk fra University of Lincoln, Storbritannia. Han er en profesjonell programvareutvikler, og når han ikke flyr droner eller skriver musikk, kan han ofte bli funnet å ta bilder eller produsere videoer.

Mer fra Joe Coburn

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere