Langsung ke konten

Lambda Function di Python: Function Ringkas Satu Baris

Lambda function adalah function ringkas tanpa nama di Python. Artikel ini membahas syntax lambda, beda dengan def, serta penggunaan map, filter, dan sorted.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Scope Variabel. Sekarang kita pakai bentuk function yang lebih ringkas untuk tugas-tugas kecil.

Tidak semua function perlu nama dan beberapa baris. Untuk operasi sederhana yang dipakai sekali, Python menyediakan lambda.

Apa itu Lambda?

Lambda adalah function tanpa nama yang ditulis dalam satu baris. Bentuknya:

lambda parameter: ekspresi

Perhatikan bahwa tidak ada kata def, tidak ada return, dan hasilnya langsung berupa ekspresi:

kuadrat = lambda x: x * x
print(kuadrat(5))   # 25

Baris lambda x: x * x setara dengan:

def kuadrat(x):
    return x * x

Lambda bisa punya beberapa parameter:

tambah = lambda a, b: a + b
print(tambah(3, 4))   # 7

Lambda vs Function Biasa

Keduanya sama-sama function. Bedanya ada di bentuk dan kegunaan:

Aspekdeflambda
NamaWajibTidak ada
Jumlah barisBisa banyakSatu ekspresi
returnDitulis eksplisitOtomatis
DocstringBisaTidak bisa
KegunaanLogika kompleksOperasi singkat sekali pakai

Karena lambda tidak punya nama dan hanya berisi satu ekspresi, ia kurang cocok untuk logika yang rumit. Kalau ekspresinya mulai panjang, function biasa lebih mudah dibaca.

Lambda dengan map()

map() menerapkan sebuah function ke setiap item dalam urutan:

angka = [1, 2, 3, 4, 5]
kuadrat = list(map(lambda x: x ** 2, angka))

print(kuadrat)   # [1, 4, 9, 16, 25]

map() mengembalikan objek iterator, jadi bungkus dengan list() untuk melihat isinya.

Lambda dengan filter()

filter() menyaring item yang memenuhi kondisi:

angka = [1, 2, 3, 4, 5, 6, 7, 8]
genap = list(filter(lambda x: x % 2 == 0, angka))

print(genap)   # [2, 4, 6, 8]

Function di dalam filter() harus mengembalikan True atau False. Item yang bernilai True saja yang lolos.

Lambda dengan sorted()

sorted() mengurutkan data, dan bisa menerima lambda sebagai penentu kunci pengurutan:

buah = ["mangga", "apel", "jeruk"]
urut = sorted(buah, key=lambda x: len(x))

print(urut)   # ['apel', 'jeruk', 'mangga']

Di sini key menentukan bahwa pengurutan didasarkan pada panjang kata, bukan alfabet.

Contoh yang lebih berguna, mengurutkan data berdasarkan kolom tertentu:

siswa = [
    ("Budi", 85),
    ("Sari", 92),
    ("Anton", 78),
]

urut = sorted(siswa, key=lambda s: s[1], reverse=True)

for nama, nilai in urut:
    print(f"{nama}: {nilai}")

Output:

Sari: 92
Budi: 85
Anton: 78

key=lambda s: s[1] berarti urutkan berdasarkan nilai (item indeks 1), dan reverse=True membuat urutannya dari besar ke kecil.

Kapan Memakai Lambda?

Lambda cocok saat:

  • Function hanya dipakai sekali dan langsung diberikan sebagai argument.
  • Operasinya sederhana, cukup satu ekspresi.
  • Dipakai bersama map(), filter(), atau sorted().

Lambda sebaiknya dihindari saat:

  • Logikanya butuh beberapa langkah atau kondisi bertingkat.
  • Butuh docstring atau nama yang menjelaskan maksudnya.
  • Function akan dipakai berulang di banyak tempat.

Ingat, di Python modern list comprehension sering lebih jelas daripada map() atau filter() dengan lambda:

# Dengan map dan lambda
kuadrat = list(map(lambda x: x ** 2, angka))

# Dengan list comprehension
kuadrat = [x ** 2 for x in angka]

Keduanya benar. Pilih yang paling mudah dibaca.

Contoh Program: Mengurutkan Data Penjualan

Mari urutkan produk berdasarkan total penjualan:

# urut_penjualan.py

penjualan = [
    {"produk": "Apel", "terjual": 120, "harga": 15000},
    {"produk": "Jeruk", "terjual": 200, "harga": 12000},
    {"produk": "Mangga", "terjual": 80, "harga": 20000},
]

urut = sorted(
    penjualan,
    key=lambda p: p["terjual"] * p["harga"],
    reverse=True,
)

for p in urut:
    total = p["terjual"] * p["harga"]
    print(f"{p['produk']}: Rp{total:,}")

Output:

Jeruk: Rp2,400,000
Apel: Rp1,800,000
Mangga: Rp1,600,000

Lambda di sini menghitung total penjualan sebagai dasar pengurutan, tanpa perlu membuat function terpisah.

Kesalahan Umum Pemula

  • Menaruh statement di dalam lambda — lambda hanya boleh berisi ekspresi.
  • Lupa bahwa map() dan filter() mengembalikan iterator — bungkus dengan list().
  • Memakai lambda untuk logika rumit — lebih baik pakai def.
  • Menugaskan lambda ke variabel lalu memakainya berkali-kali — sebaiknya pakai def.
  • Salah mengira lambda tidak punya parameter — lambda bisa punya berapa pun parameter.

Ringkasan

  • Lambda adalah function tanpa nama yang ditulis dalam satu baris
  • Bentuknya lambda parameter: ekspresi, hasilnya otomatis dikembalikan
  • Lambda tidak punya nama dan docstring, cocok untuk tugas singkat
  • map() menerapkan function ke setiap item, filter() menyaring item
  • sorted() bisa memakai lambda sebagai penentu kunci pengurutan
  • Untuk logika rumit, function biasa dengan def lebih jelas

Langkah Selanjutnya

Kamu sudah bisa membuat function dengan berbagai bentuk. Tapi program yang menerima input pengguna sering menemui data yang tidak sesuai harapan, misalnya angka yang tidak valid atau file yang tidak ada.

Artikel selanjutnya membahas Syntax Error vs Exception di Python, cara membaca pesan error dan mengenali jenis kesalahan yang umum.