Comprehension: List, Dict & Set

Membuat koleksi baru dalam satu baris yang ringkas dan mudah dibaca.

Part 16 dari 24 ± 35 menit Gratis

List comprehension

Pola: [ekspresi for item in sumber if syarat].

Cara biasa:

kuadrat = []
for n in range(1, 6):
    kuadrat.append(n * n)

Dengan comprehension:

kuadrat = [n * n for n in range(1, 6)]     # [1, 4, 9, 16, 25]

Dengan filter

genap = [n for n in range(10) if n % 2 == 0]       # [0, 2, 4, 6, 8]
kapital = [k.upper() for k in ["a", "b"]]          # ['A', 'B']
panjang = [len(k) for k in ["apel", "kiwi"]]       # [4, 4]

if-else di ekspresi

if/else sebagai bagian ekspresi ditulis di depan for:

label = ["genap" if n % 2 == 0 else "ganjil" for n in range(4)]
# ['genap', 'ganjil', 'genap', 'ganjil']

Sedangkan if saja (sebagai filter) ditulis di belakang.

Loop bersarang

pasangan = [(x, y) for x in [1, 2] for y in ["a", "b"]]
# [(1,'a'), (1,'b'), (2,'a'), (2,'b')]

rata = [n for baris in [[1, 2], [3, 4]] for n in baris]   # meratakan: [1, 2, 3, 4]

Lebih dari dua tingkat biasanya tidak terbaca; gunakan loop biasa.

Dict comprehension

kata = ["apel", "kiwi", "jeruk"]
panjang = {k: len(k) for k in kata}          # {'apel': 4, 'kiwi': 4, 'jeruk': 5}
terbalik = {v: k for k, v in panjang.items()}

Set comprehension

huruf = {c for c in "banana"}                # {'b', 'a', 'n'}

Generator expression

Dengan kurung biasa, hasilnya dihitung malas (satu per satu) sehingga hemat memori:

total = sum(n * n for n in range(1_000_000))

Kapan sebaiknya tidak dipakai?

  • Jika butuh banyak logika atau efek samping (print, simpan file): pakai for biasa.
  • Jika sulit dibaca dalam satu tarikan napas: pecah.

Aturan praktis: comprehension untuk membangun koleksi, loop untuk melakukan tindakan.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X