Nästa kapitel: lista förståelse
Lambda, filter, minska och karta
Lambda operatör
vissa gillar det, andra hatar det och många är rädda för lambda operatören. Vi är övertygade om att du kommer att gilladet, när du är klar med detta kapitel i vår handledning., Om inte, kan du lära dig allt om ”List Comprehensions”, Guido van Rossums föredrog sätt att göra det, eftersomhan gillar inte Lambda, karta, filter och minska heller.
funktionen lambda operator eller lambda är ett sätt att skapa små anonyma funktioner, dvs. funktioner utan namn. Dessa funktioner är kasta bort funktioner, dvs de behövs bara där de har skapats.Lambda funktioner används främst i kombination med funktionerna filter(), karta() och minska().Lambda-funktionen lades till Python på grund av efterfrågan från Lisp-programmerare.,
den allmänna syntaxen för en lambda-funktion är ganska enkel:
lambda argument_list: expression
argumentlistan består av en kommaseparerad lista över argument och expressionen är ett aritmetiskt uttryck som använder dessa argument. Du kan tilldela funktionen till en variabel för att ge den ett namn.
följande exempel på en lambda-funktion Returnerar summan av dess två argument:
>>> f = lambda x, y : x + y>>> f(1,1)2
funktionen map ()
fördelen med lambda-operatören kan ses när den används i kombination med funktionen map ().,
karta() är en funktion med två argument:
r = map(func, seq)
Det första argumentet func är namnet på en funktion och den andra en sekvens (exempelvis en lista) seq. karta () använder funktionen func till alla delar av sekvensen seq. Den returnerar en ny lista med de element som ändrats av funcIn exemplet ovan vi inte har använt lambda. Genom att använda lambda skulle vi inte ha behövt definiera och namnge funktionerna fahrenheit () och celsius (). Du kan se detta i följande interaktiva session:map () kan tillämpas på mer än en lista. Listorna måste ha samma längd., karta() kommer applyits lambda-funktion till de delar av argument listor, dvs det första gäller att elementen med index 0, så att de delar med den 1: a index tills den n-te-index är nått:
>>> 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 exemplet ovan att parametern x får sina värden från en lista, medan y getsits värden från b och z från listan. c.
Filtrering
funktionen filter(funktion, lista) erbjuder ett elegant sätt att filtrera ut alla element i en lista,för vilket funktionen funktionen returnerar True.
funktionsfiltret(f,l) behöver en funktion f som sitt första argument., f returnerar ett booleskt värde, dvs. eitherTrue eller False. Denna funktion kommer att tillämpas på varje element i listan l. endast om f returnerar sant kommer elementet i listan att ingå i resultatlistan.
minska en lista
funktionen minska(func, seq) tillämpar kontinuerligt funktionen func() till sekvensen seq. Det returnerar asingle värde.,
om SEQ = , calling reduce(func, seq) fungerar så här:
vi illustrerar denna process i följande exempel:
>>> reduce(lambda x,y: x+y, )113
följande diagram visar de mellanliggande stegen i beräkningen:
exempel på reduce()
bestämma maximalt antal numeriska värden genom att använda reduce:
>>> f = lambda a,b: a if (a > b) else b>>> reduce(f, )102>>>
beräkna summan av siffrorna från 1 till 100:
>>> reduce(lambda x, y: x+y, range(1,101))5050
nästa kapitel: lista förståelse