# -*- 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)))