Næste Kapitel: Liste Forståelse
Lambda, filter, reducere og kort
Lambda-Operatoren
Nogle kan lide det, andre hader det, og mange er bange for lambda-operatoren. Vi er overbeviste om, at du vil lideDet, når du er færdig med dette kapitel i vores tutorial., Hvis ikke, kan du lære alt om “Liste Forståelser”, Guido van Rossums foretrukne måde at gøre det på, becausehe ikke kan lide Lambda, kort, filter og reducere enten.
lambda-operatøren eller lambda-funktionen er en måde at oprette små anonyme funktioner, dvs.funktioner uden et navn. Disse funktioner er smid-væk funktioner, dvs. de er bare brug for, hvor de er blevet oprettet.Lambda-funktioner bruges hovedsageligt i kombination med funktionerne filter(), kort() og reducer().Lambda-funktionen blev tilføjet til Python på grund af efterspørgslen fra Lisp-programmører.,
den generelle syntaks for en lambda-funktion er ganske enkel:
lambda argument_list: udtryk
argumentlisten består af en kommasepareret liste over argumenter, og udtrykket er et aritmetisk udtryk ved hjælp af disse argumenter. Du kan tildele funktionen til en variabel for at give den et navn.
følgende eksempel på en lambda-funktion returnerer summen af dens to argumenter:
>>> f = lambda x, y : x + y>>> f(1,1)2
kort () – funktionen
fordelen ved lambda-operatøren kan ses, når den bruges i kombination med kort () – funktionen.,
map() er en funktion med to argumenter:
r = map(func, seq)
Det første argument func er navnet på en funktion, og den anden en sekvens (fx en liste) ff. map () anvender funktionen func til alle elementer i sekvensen se.. Den returnerer en ny liste med de elementer, der er ændret af funcIn eksemplet ovenfor, vi ikke har brugt lambda. Ved at bruge lambda ville vi ikke have været nødt til at definere og navngive funktionerne fahrenheit() og Celsius(). Du kan se dette i den følgende interaktive session: kort() kan anvendes på mere end en liste. Listerne skal have samme længde., kort() vil applyits lambda-funktion til de elementer i argumentet lister, dvs det første gælder, at de elementer, der er med 0 indeks, så at de elementer, der er med den 1. indeks, indtil den n-th-indekset er nået:
>>> a = >>> b = >>> c = >>> map(lambda x,y:x+y, a,b)>>> map(lambda x,y,z:x+y+z, a,b,c)>>> map(lambda x,y,z:x+y-z, a,b,c)
Vi kan se i ovenstående eksempel, at parameteren x får sine værdier fra en liste, mens y getsits værdier fra b og z fra liste c.
Filtrering
funktionen filter(funktion, liste) tilbyder en elegant måde at filtrere alle elementer i en liste,for som funktion funktion returnerer True.
funktionsfilteret(f,l) har brug for en funktion f som sit første argument., f returnerer en boolsk værdi, dvs. entensand eller falsk. Denne funktion vil blive anvendt på alle elementer i listen l. kun hvis f returnerer True vil elementet af listen indgå i resultatlisten.
reduktion af en liste
funktionen reducer(func, se.) anvender løbende funktionen func() til sekvens se.. Det returnerer asingle værdi.,
Hvis seq = , ringer reducere(func, seq) virker på denne måde:
Vi illustrere denne proces i det følgende eksempel:
>>> reduce(lambda x,y: x+y, )113
følgende diagram viser de mellemliggende trin i beregningen:
Eksempler på at reducere()
Bestemmelse af den maksimale af en liste af numeriske værdier ved hjælp reducere:
>>> f = lambda a,b: a if (a > b) else b>>> reduce(f, )102>>>
Beregne summen af tallene fra 1 til 100:
>>> reduce(lambda x, y: x+y, range(1,101))5050
Næste Kapitel: Liste Forståelse