# Functional Programming in Python

Contents

Functional programming can also be interesting in Python. Here are some useful snippets.

## Lambda

A lambda expression is an anonymous function.

# Simple power function
f = lambda x: x*x
[f(x) for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


## Map

map is a higher-order function that allows to apply a function to every element in an iterable object and it returns itself an iterable.

m = map(f, range(10))
list(m)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


## Filter

The filter function tests each element in an iterable object with a function that returns either True or False.

# In this case it's an even filter
even = filter(lambda x: x % 2 == 0, range(10))

list(even)
# [0, 2, 4, 6, 8]

# Combine map and filter
even = map(f, filter(lambda x: x % 2 == 0, range(10)))

list(even)
# [0, 4, 16, 36, 64]


## Reduce

Apply function of two arguments cumulatively to the items of sequence, from left to right, so as to reduce the sequence to a single value.

from functools import reduce

reduce(lambda x,y: x+y, range(10))
# 45


head and tail are idiomatic of functional programming languages.

head, *tail = range(10)
# 0

tail
# [1, 2, 3, 4, 5, 6, 7, 8, 9]


## List Comprehension

[n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]


## Any and All

Check if any or all conditions are met. They can also be seen as series of logical or and and operators, respectively.

any(x > 10 for x in range(10))
# False

all(x >= 0 for x in range(10))
# True