- Функція вищого порядку: Функція, яка приймає іншу функцію як параметр, називається функцією вищого порядку.
- Приклади:
map
таreduce
в Python та PySpark. - Python не має паралелізму, на відміну від PySpark.
Що таке Lambda функція?
- Lambda функція:
- Це вбудована функція (також відома як анонімна функція).
- Не потребує імені функції, замість цього безпосередньо визначає об'єкт функції.
- Може приймати кілька аргументів, але обчислює та повертає лише одне вираз.
- Не використовує дужки для параметрів.
Приклади:
Приклади звичайних функцій:
# Приклад 1
# Функція для віднімання
def sub(x, y):
return abs(x - y)print(sub(2, 9)) # Вивід: 7# Приклад 2
# Множимо елементи списку на 2def square(x, y):
return [x * 2, y * 2]print(square(2, 4)) # Вивід: [4, 8]# Приклад 3
# Квадрат числаdef square(x):
return x ** 2print(square(2)) # Вивід: 4
Використання map зі звичайною функцією:
l = [1, 2, 3, 4, 5]
print(list(map(square, l))) # Вивід: [1, 4, 9, 16, 25]
Приклади Lambda функцій:
l = [1, 2, 3, 4, 5]
# Приклад 1
# Повертаємо той самий список за допомогою Lambda
print(list(map(lambda x: x, l))) # Вивід: [1, 2, 3, 4, 5]# Приклад 2
# Квадрат елементів за допомогою Lambda
print(list(map(lambda x: x ** 2, l))) # Вивід: [1, 4, 9, 16, 25]# Приклад 3
# Використовуємо Reduce з Lambda
from functools import reduceprint(reduce(lambda x, y: x + y, l)) # Вивід: 15
Спостереження:
1.
1. Спочатку ми створювали функції за допомогою def
.
2. Потім ми використовували lambda, щоб досягти подібних результатів без явного визначення функції.
3. Lambda спрощує однорядкові функції, особливо в випадках, що включають функції вищого порядку, такі як map
та reduce
.
Чому Lambda не може замінити Map?
- Lambda — це лише визначення функції, а не ітератор.
- Map застосовує функцію (включаючи lambda) до кожного елемента в ітерабельному об'єкті, автоматично обробляючи ітерації.
- Lambda сама по собі не може виконати цикл через кожен елемент списку чи послідовності; для обробки кількох елементів вона потребує обгортки, як-от
map
або генератора списку. - Ключовий момент:
map
надає вбудовану ітерацію, що робить його більш лаконічним та швидким, ніж написання циклів вручну з lambda функціями.
Перекладено з: Lambda vs Normal function