Hari 14: Lambda, map(), filter() & sorted()
60 min
Last updated 26 Mar 2026
Lambda — Fungsi Anonim Satu Baris
# Sintaks: lambda parameter: ekspresi
kuadrat = lambda x: x ** 2
tambah = lambda a, b: a + b
kondisi = lambda x: "genap" if x % 2 == 0 else "ganjil"
print(kuadrat(5)) # 25
print(tambah(3, 4)) # 7
print(kondisi(7)) # ganjil
# Lambda dengan banyak ekspresi — TIDAK BISA
# Gunakan fungsi def biasa untuk logika kompleks
map() — Terapkan Fungsi ke Setiap Elemen
angka = [1, 2, 3, 4, 5]
# Cara lama
kuadrat = []
for n in angka:
kuadrat.append(n ** 2)
# Dengan map()
kuadrat = list(map(lambda x: x**2, angka))
print(kuadrat) # [1, 4, 9, 16, 25]
# map dengan fungsi biasa
def rupiah(harga):
return f"Rp {harga:,}"
harga_list = [15000, 30000, 125000]
harga_format = list(map(rupiah, harga_list))
print(harga_format) # ['Rp 15,000', ...]
# map dua list sekaligus
a = [1, 2, 3]
b = [10, 20, 30]
hasil = list(map(lambda x, y: x + y, a, b))
print(hasil) # [11, 22, 33]
filter() — Saring Elemen
angka = [1, -2, 3, -4, 5, -6, 7, 0]
positif = list(filter(lambda x: x > 0, angka))
print(positif) # [1, 3, 5, 7]
# filter dengan None — hapus nilai falsy
data = [1, 0, None, "halo", "", False, 42]
valid = list(filter(None, data))
print(valid) # [1, 'halo', 42]
mahasiswa = [
{"nama": "Ana", "ipk": 3.8},
{"nama": "Budi", "ipk": 2.9},
{"nama": "Citra", "ipk": 3.5},
{"nama": "Doni", "ipk": 3.1},
]
cumlaude = list(filter(lambda m: m["ipk"] >= 3.5, mahasiswa))
for m in cumlaude:
print(f"{m['nama']}: {m['ipk']}")
sorted() dengan key
produk = [
{"nama": "Laptop", "harga": 15_000_000, "stok": 10},
{"nama": "Mouse", "harga": 150_000, "stok": 50},
{"nama": "Monitor", "harga": 3_000_000, "stok": 15},
{"nama": "Keyboard","harga": 500_000, "stok": 30},
]
# Urutkan berdasarkan harga
by_harga = sorted(produk, key=lambda p: p["harga"])
for p in by_harga:
print(f"{p['nama']:<10}: Rp {p['harga']:>12,}")
# Urutkan berdasarkan 2 kriteria
by_multi = sorted(produk, key=lambda p: (-p["stok"], p["nama"]))
# operator.itemgetter — alternatif lambda untuk dict
from operator import itemgetter
by_nama = sorted(produk, key=itemgetter("nama"))Assignment
Diberikan list transaksi penjualan. Gunakan map, filter, dan sorted untuk: (1) hitung total per transaksi (qty*harga), (2) filter transaksi > Rp 500.000, (3) urutkan dari terbesar.
Expected output:
ID Produk Qty Harga Total
--------------------------------------------------
T001 Laptop 1 8,500,000 8,500,000
T003 Monitor 2 2,000,000 4,000,000
PY
main.py
Solution
Output