Sök…


Introduktion

Funktionell programmering sönderdelar ett problem till en uppsättning funktioner. Idealt, funktioner tar bara ingångar och producerar utgångar, och har inget internt tillstånd som påverkar utgången som produceras för en given ingång. Nedan är funktionella tekniker som är gemensamma för många språk: till exempel lambda, karta, minska.

Lambdafunktion

En anonym, inlined funktion definierad med lambda. Parametrarna för lambda definieras till vänster om kolon. Funktionskroppen definieras till höger om tjocktarmen. Resultatet av att man kör funktionskroppen returneras (implicit).

s=lambda x:x*x
s(2)    =>4

Kartfunktion

Karta tar en funktion och en samling av objekt. Det skapar en ny, tom samling, kör funktionen på varje objekt i den ursprungliga samlingen och sätter in varje returvärde i den nya samlingen. Den returnerar den nya kollektionen.

Detta är en enkel karta som tar en lista med namn och returnerar en lista över längden på dessa namn:

name_lengths = map(len, ["Mary", "Isla", "Sam"])
print(name_lengths)    =>[4, 4, 3]

Minska funktionen

Minska tar en funktion och en samling artiklar. Det returnerar ett värde som skapas genom att kombinera objekten.

Detta är en enkel minskning. Det returnerar summan av alla objekt i samlingen.

total = reduce(lambda a, x: a + x, [0, 1, 2, 3, 4])
print(total)    =>10

Filterfunktion

Filter tar en funktion och en samling. Det returnerar en samling av varje objekt som funktionen returnerade True.

arr=[1,2,3,4,5,6]
[i for i in filter(lambda x:x>4,arr)]    # outputs[5,6]


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow