Лямбда проти звичайної функції

  • Функція вищого порядку: Функція, яка приймає іншу функцію як параметр, називається функцією вищого порядку.
  • Приклади: 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

Leave a Reply

Your email address will not be published. Required fields are marked *