Zoeken…


Invoering

Functioneel programmeren ontleedt een probleem in een reeks functies. In het ideale geval nemen functies alleen ingangen en produceren uitgangen, en hebben ze geen interne status die de uitgang voor een bepaalde ingang beïnvloedt. Hieronder volgen functionele technieken die in veel talen voorkomen: zoals lambda, map, verkleinen.

Lambda-functie

Een anonieme, inline functie gedefinieerd met lambda. De parameters van de lambda worden links van de dikke darm gedefinieerd. Het functielichaam wordt rechts van de dikke darm gedefinieerd. Het resultaat van het uitvoeren van de functietekst wordt (impliciet) geretourneerd.

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

Kaart functie

Kaart heeft een functie en een verzameling items. Het maakt een nieuwe, lege verzameling, voert de functie uit op elk item in de oorspronkelijke verzameling en voegt elke retourwaarde in de nieuwe verzameling in. Het geeft de nieuwe collectie terug.

Dit is een eenvoudige kaart met een lijst met namen en een lijst met de lengte van die namen:

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

Functie verminderen

Verkleinen heeft een functie en een verzameling items nodig. Het retourneert een waarde die is gemaakt door de items te combineren.

Dit is een eenvoudige reductie. Het retourneert de som van alle items in de verzameling.

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

Filterfunctie

Filter heeft een functie en een verzameling nodig. Het retourneert een verzameling van elk item waarvoor de functie True retourneerde.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow