← Kembali ke kursus
Pelajaran kursus · Python
Pelajaran 20

Lambda, map, filter, reduce

Fungsi anonim satu-baris dan operasi koleksi fungsional.

Pahami konsepnya

Lambda adalah fungsi anonim satu ekspresi: kali_dua = lambda x: x * 2. Ia setara fungsi def singkat tapi tanpa nama dan tanpa多 baris. Kegunaan utamanya: dikirim sebagai argumen ke fungsi lain yang mengharapkan fungsi — sort(key=lambda x: x[1]), map(lambda x: x*2, data).

map(fungsi, iterable) menerapkan fungsi ke tiap elemen dan mengembalikan iterator: list(map(str.upper, nama)). filter(fungsi, iterable) menyaring elemen yang membuat fungsi True: list(filter(lambda x: x > 5, angka)). Keduanya mengembalikan iterator — konversi list() untuk melihat hasilnya.

reduce dari functools menggabungkan elemen menjadi satu nilai: reduce(lambda a, b: a + b, angka) menjumlahkan seluruh list. Versi Pythonic-nya sering comprehension: [x*2 for x in data] menggantikan map, [x for x in data if x > 5] menggantikan filter.

Coba contoh kode

angka = [3, 8, 1, 9, 4, 6]

# lambda + sort
pasangan = [("andi", 85), ("budi", 92), ("citra", 78)]
pasangan.sort(key=lambda p: p[1], reverse=True)
print(pasangan)

# map
dobel = list(map(lambda x: x * 2, angka))
print(dobel)

# filter
besar = list(filter(lambda x: x > 5, angka))
print(besar)

# comprehension setara
print([x * 2 for x in angka])
print([x for x in angka if x > 5])

Lambda paling bersinar sebagai key untuk sort — satu baris mengurutkan berdasarkan elemen kedua tuple. map dan filter mengembalikan iterator; list() mengubahnya untuk dicetak. Dua baris terakhir menunjukkan comprehension yang setara — gaya yang lebih Pythonic.

Latihan singkat

Uji: filter kelipatan 3 dari 1-20 — harus `[3, 6, 9, 12, 15, 18]`.