47.20K
Категория: ПрограммированиеПрограммирование

Языки программирования. Лекция №9

1.

Языки программирования
Лекция №9
Куникеев Айдын Дәулетұлы

2.

Лямбда функция
• Вид функции которую можно использовать как значение
• Создаются с помощью ключевого слова lambda
• Синтксис:
• lambda <параметр>, <параметр>,…: <выражение>

3.

Вызов лямбда функции:
• Есть два способа:
• На прямую:
• (lambda <параметр>, <параметр>,…: <выражение>)(<параметр>, <параметр>,…)
• Через переменную:
• a = lambda <параметр>, <параметр>,…: <выражение>
• a(<параметр>, <параметр>,…)

4.

Тенарный опретор или однастрочное
выражение if/else
• Синтаксис:
• <выражение 1> if <условие> else <выражение 2>
• Тоже самое что:
• if <условие>:
• <выражение 1>
• else:
• <выражение 2>
• a = 10
• print(“equal to 10”) if a==10 else print(“not equal to 10”)
• Или же можно сразу вернуть значение:
• b = True if a==10 else False

5.

Создание лямбда функции и вызов лямбда
функции
• add = lambda x, y: x + y
• print(add(10,20))
• X = (lambda x, y: x + y)(5, 3)
• print(X)
• f = lambda a,b: a if (a > b) else b
• print(f(10,20))

6.

Лямбда и map()
• map() – используется для проекций одной или нескольких
коллекций к другой новой, тоесть новая создается на основе
существующих
• Рассмотрим, что
• a = [x for x in range(100)] – список состояший из целых чисел от 0 до 99

7.

Лямбда и map()
• map(<функция>, <коллекция>). Функция может принимать сколко
угодна параметров, каждый параметр соответсвует коллекции.
• Проекцирование через увеличения на 10
• map(lambda x: x+10, a) -> 10, 11, 12, …, 109
• Проекцирование через умножения на 2
• map(lambda x: x*2, a) -> 0, 2, 4, …, 198
• Проекцирование через увеличения определенную формулу
• map(lambda x: 2*x**2-x+10, a) -> 10, 11, 16, …, 19010
• Проекцирование на один тип для всех элементов
• map(lambda x: str(x), a) -> 0, 2, 4, …, 200

8.

Лямбда и map() – с несколькими
коллекциями
• Когда нужно использовать несколко коллекций для генераций
нужной коллекций
• map(lambda x,y: x**2+y**2, a,b)

9.

Лямбда и filter()
• filter() – функция для фильтраций коллекций
• filter(<функция>, <коллекция>). Функция принимает только один
параметр.
• x = filter(lambda x: x>=20, a) – создает новую коллекцию

10.

Лямбда и reduce()
• functools.reduce() – данная функция нужна для того чтобы сделать одну
общую операцию со всеми элементами коллекции. Например сумма,
найти максимум, умножение, разность.
• functools.reduce(<функция>(x,y), <коллекция>). Функция обязательно
должна иметь два параметра.
• import functools
• x = functools.reduce(lambda x,y: x*y, a) – умножает все
• x = functools.reduce(lambda x,y: x if x>y else y, a) – находит максимум
элемент

11.

Заключение map, reduce, filter
• Для map, reduce и filter не обязательно использовать лямбда функцию:
• map(math.sin, a)
• def calc(a,b):
return a*b+a+b
• x = [1,2,3]
• y = [4,5,6]
• z = list(map(calc,x,y))
English     Русский Правила