Lambda adalah fungsi kecil, anonim, dengan satu ekspresi. map, filter, dan reduce adalah alat fungsional yang menerapkan fungsi di seluruh iterable. Bersama-sama memungkinkan gaya fungsional — meskipun Python sering lebih menyukai comprehension untuk tugas yang sama.
Lambda — fungsi anonim sebaris
# a lambda is a one-line function with no name
square = lambda x: x ** 2
square(5) # 25
# equivalent named function:
def square(x): return x ** 2
Lambda bersinar sebagai argumen sebaris ke fungsi lain, terutama sebagai kunci sort/filter:
people.sort(key=lambda p: p.age) # sort by an attribute
sorted(words, key=lambda w: len(w)) # sort by length
max(items, key=lambda x: x.score) # find max by a criterion
map — terapkan fungsi ke setiap elemen
nums = [1, 2, 3, 4]
list(map(lambda x: x ** 2, nums)) # [1, 4, 9, 16]
# more Pythonic alternative — a comprehension:
[x ** 2 for x in nums] # [1, 4, 9, 16]
filter — pertahankan elemen yang lulus tes
list(filter(lambda x: x % 2 == 0, nums)) # [2, 4]
# comprehension equivalent:
[x for x in nums if x % 2 == 0] # [2, 4]
reduce — lipat iterable menjadi satu nilai
from functools import reduce
reduce(lambda acc, x: acc + x, nums, 0) # 10 (sum)
# but built-ins are clearer when they exist:
sum(nums) # 10
Preferensi Pythonic
For map/filter, COMPREHENSIONS are usually more readable and idiomatic:
map(f, xs) → [f(x) for x in xs]
filter(pred, xs) → [x for x in xs if pred(x)]
Lambdas are best for short inline keys (sort/max/filter), NOT complex logic.
Guido (pencipta Python) dan komunitas umumnya lebih menyukai comprehension daripada map/filter untuk keterbacaan; reduce bahkan dipindahkan dari built-in. Tapi lambda sebagai fungsi key= tetap idiomatik dan umum.
Mengapa ini penting
Alat fungsional ini memungkinkan Anda mengekspresikan transformasi dan filter secara ringkas.
Meskipun Python dapat ditulis secara fungsional, pilihan idiomatik biasanya adalah comprehension daripada map/filter untuk keterbacaan, dan built-in (sum, max, min) daripada reduce.
Di mana lambda benar-benar bersinar adalah sebagai fungsi inline kecil yang dilewatkan ke sort/max/min/filter sebagai key.
Memahami keduanya — dan mengetahui preferensi Pythonic untuk comprehension dan built-in — membantu Anda menulis kode yang bersih dan idiomatik serta membaca kode gaya fungsional yang muncul dalam proyek nyata.
