Comprehension adalah fitur Python yang memungkinkan kita untuk membuat struktur data seperti list, set, dan dictionary dengan sintaks yang singkat, efisien, dan mudah dibaca. Dengan comprehension, kita bisa menggantikan penggunaan loop yang panjang menjadi satu baris kode yang ringkas namun tetap powerful.
Ada tiga jenis comprehension yang umum digunakan di Python, yaitu:
- List Comprehension
- Set Comprehension
- Dictionary Comprehension
1. List Comprehension
List Comprehension digunakan untuk membuat list baru dari iterasi yang dihasilkan oleh sebuah ekspresi. Sintaks dasarnya adalah:
# Sintaks dasar
[expression for item in iterable if condition]
Contoh Kasus 1: Membuat List Kuadrat Angka
# Tanpa list comprehension
angka = [1, 2, 3, 4, 5]
hasil = []
for i in angka:
hasil.append(i**2)
print(hasil)
# Dengan list comprehension
hasil = [i**2 for i in angka]
print(hasil)
Output:
[1, 4, 9, 16, 25]
Dengan satu baris kode, kita bisa menghasilkan list baru dari operasi matematika atau logika tertentu. Ini sangat membantu untuk menulis kode yang lebih bersih dan efisien.
Contoh Kasus 2: Menyaring Angka Genap
# Membuat list angka genap dari 0 hingga 10 genap = [x for x in range(11) if x % 2 == 0] print(genap)
Output:
[0, 2, 4, 6, 8, 10]
2. Set Comprehension
Set Comprehension mirip seperti list comprehension, tetapi menghasilkan set (kumpulan unik tanpa urutan). Sintaksnya hampir sama, hanya menggunakan tanda kurung kurawal { }.
# Sintaks dasar
{expression for item in iterable if condition}
Contoh Kasus: Membuat Set dari Huruf Unik
kata = "programming"
unik = {huruf for huruf in kata}
print(unik)
Output (urutan bisa berbeda):
{'r', 'p', 'a', 'g', 'm', 'i', 'n', 'o'}
Dengan set comprehension, duplikasi elemen otomatis dihapus. Sangat berguna saat kita ingin mendapatkan data unik dari sebuah kumpulan.
Contoh Kasus: Set Angka Kuadrat
kuadrat = {x**2 for x in range(10)}
print(kuadrat)
3. Dictionary Comprehension
Dictionary Comprehension memungkinkan kita membuat dictionary baru dari iterable dengan cara singkat. Kita bisa menentukan key dan value di dalam satu ekspresi.
# Sintaks dasar
{key_expression: value_expression for item in iterable if condition}
Contoh Kasus: Membuat Dictionary Kuadrat
# Membuat dictionary dengan key = angka, value = kuadratnya
angka_dict = {x: x**2 for x in range(1, 6)}
print(angka_dict)
Output:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Contoh Kasus: Filtering dengan Kondisi
# Hanya menyertakan angka genap
angka_dict_genap = {x: x**2 for x in range(10) if x % 2 == 0}
print(angka_dict_genap)
Output:
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
4. Nested Comprehension (Comprehension Bersarang)
Kita juga bisa menulis comprehension di dalam comprehension lain (nested). Misalnya membuat list 2D atau melakukan kombinasi dua list.
# Membuat list 2D dari 3x3 matrix = [[x for x in range(3)] for y in range(3)] print(matrix)
Output:
[[0, 1, 2], [0, 1, 2], [0, 1, 2]]
Dengan nested comprehension, kita dapat menghasilkan struktur data kompleks seperti matriks dengan sangat cepat dan efisien.
5. Perbandingan Efisiensi: Loop vs Comprehension
Comprehension tidak hanya membuat kode lebih singkat, tetapi juga lebih cepat dibandingkan loop tradisional karena Python mengoptimalkan eksekusinya secara internal.
import time
# Dengan loop
start = time.time()
hasil_loop = []
for i in range(1_000_000):
hasil_loop.append(i * 2)
print("Loop:", time.time() - start)
# Dengan list comprehension
start = time.time()
hasil_comp = [i * 2 for i in range(1_000_000)]
print("Comprehension:", time.time() - start)
Pada kebanyakan kasus, comprehension lebih cepat hingga 30–40% dibandingkan penggunaan loop biasa.
Kesimpulan
Comprehension List, Set, dan Dict adalah cara efisien untuk membuat struktur data di Python. Selain mempersingkat kode, comprehension juga membantu meningkatkan performa program.
Gunakan comprehension saat kamu ingin:
- Menghasilkan data baru dari iterable lain.
- Menyaring data dengan kondisi tertentu.
- Membuat dictionary atau set dengan cepat.
Namun, jika logika terlalu kompleks, hindari comprehension agar kode tetap mudah dibaca. Gunakanlah dengan bijak sesuai kebutuhan.