# -*- coding: utf8 -*-

import operator
from functools import partial

a = [1, 10, 2, 9] 

#--------------------------- lambda ---------------------------

# f и g -- одинаковые функции
f = lambda x: x > 2 
def g(x): return x > 2 

#--------------------------- filter ---------------------------

# Три способа оставить только элементы >2
print(list(filter(lambda x: x > 2, a))) 
print(list(filter(f, a))) 
print(list(filter(g, a))) 

#--------------------------- operators ---------------------------

# https://docs.python.org/2/library/operator.html -- стандартные операторы
print(operator.eq(2, 3)) # ==
print(operator.lt(2, 3)) # <
print(operator.gt(2, 3)) # > 
print(list(filter(partial(operator.lt, 2), a)))

#--------------------------- map ---------------------------

print(list(map(lambda x: x + 2, a)))
print(list(map(partial(operator.add, 2), a)))