Het is belangrijk om te noteren dat zowel `filter()` als `reduce()` ingebouwde functies in Python zijn waarmee je operationele commando’s op lijsten (of andere soortgelijke collectieve datatypen) kunt uitvoeren zonder een expliciete lus te hoeven schrijven. Tezamen met `map()`, verenigen ze een pattern dat bekend staat als map-reduce.
1. “map()” wordt gebruikt om een functie op alle beschrijfbare items in een invoerlijst of andere iterable uit te voeren en een lijst te retourneren met alle resultaten.
```
def squared(num):
return num ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(squared, numbers))
print(squared_numbers) # Output: [1, 4, 9, 16, 25]
```
1. “filter()” wordt gebruikt om een subset van de lijst te selecteren op basis van een bepaalde voorwaarde. Dit retourneert een iterabele filterobject dat kan worden omgezet in een andere lijst of iterabele.
```
def is_even(num):
return num % 2 == 0
numbers = [1, 2, 3, 4, 5]
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers) # Output: [2, 4]
```
1. “reduce()” wordt gebruikt om een lijst of vergelijkbare methodische objecten tot één geaggregeerde waarde terug te brengen, vaak gebruikt bij sommaties, productcalculators, etc. `reduce()` is echter niet standaard beschikbaar in Python 3 en moet worden geïmporteerd uit de `functools` module.
```
from functools import reduce
def multiply(x, y):
return x * y
numbers = [1, 2, 3, 4, 5]
product = reduce(multiply, numbers)
print(product) # Output: 120
```
De functie `reduce()` neemt de eerste twee elementen van de lijst en past de gedefinieerde functie toe, houdt het resultaat bij en past de functie vervolgens toe op het resultaat en het volgende element in de lijst, en zo verder, totdat de lijst is uitgeput en een enkele resulterende waarde overblijft. In dit geval, vermenigvuldigen we doorgaand alle nummers, daarmee het resultaat van de reductiefunctie berekenend als de factorieel van de invoerlijst.