Learn
← Previous Next →

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