Python functional

From wikinotes
Revision as of 21:09, 15 November 2020 by Will (talk | contribs) (→‎multiple filters)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

map

filter

multiple filters

def above_ten(num):
    return num > 10

def below_fifteen(num):
    return num < 15
# solution-1
r = range(20)
for f in (above_ten, below_fifteen):
    r = filter(f, r)
# solution-2 (reduce/filter)
from functools import reduce
from itertools import ifilter

filter_set = [above_ten, below_fifteen]
unfiltered = list(range(20))
filtered = reduce(lambda s,f: ifilter(f,s), filter_set, unfiltered)
# solution-3 (general purpose function)
from itertools import ifilter, reduce
from functools import reduce

chain_filters = partial(reduce, lambda s,f: ifilter(f,s))
chain_filters((above_ten, below_fifteen), list(range(20)))

reduce