# Comprehension

### **1. List Comprehension**

List comprehension adalah cara singkat dan efisien untuk membuat daftar baru berdasarkan iterasi dan kondisi dari daftar atau urutan yang sudah ada.

#### **Contoh 1: Membuat daftar angka dari 1 hingga 6**

```python
# Cara biasa menggunakan append
no_list = []
no_list.append(1)
no_list.append(2)
no_list.append(3)
no_list.append(4)
no_list.append(5)
no_list.append(6)
print(no_list)  # Output: [1, 2, 3, 4, 5, 6]

# Cara langsung
no_list = [1, 2, 3, 4, 5, 6]
print(no_list)  # Output: [1, 2, 3, 4, 5, 6]

# Menggunakan list comprehension
no_list = [i for i in range(1, 7)]
print(no_list)  # Output: [1, 2, 3, 4, 5, 6]

# Menggunakan perulangan for
no_list = []
for i in range(1, 7):
    no_list.append(i)
print(no_list)  # Output: [1, 2, 3, 4, 5, 6]
```

#### **Contoh 2: Mengambil elemen genap dari sebuah list**

```python
angka_genap = [x for x in [1, 2, 3, 4, 5, 6] if x % 2 == 0]
print(angka_genap)  # Output: [2, 4, 6]
```

#### **Contoh 3: Mengubah daftar string menjadi huruf kapital**

```python
kata = ["python", "is", "awesome"]
kapital = [x.upper() for x in kata]
print(kapital)  # Output: ['PYTHON', 'IS', 'AWESOME']
```

#### **Contoh 4: Kombinasi `for` dan `if`**

```python
ganjil_dikali_2 = [x * 2 for x in range(1, 11) if x % 2 != 0]
print(ganjil_dikali_2)  # Output: [2, 6, 10, 14, 18]
```

***

### **2. Set Comprehension**

Set comprehension bekerja mirip dengan list comprehension tetapi menghasilkan **set** (himpunan unik).

#### **Contoh: Set kuadrat dari angka 1 hingga 5**

```python
kuadrat_set = {x ** 2 for x in range(1, 6)}
print(kuadrat_set)  # Output: {1, 4, 9, 16, 25}
```

***

### **3. Dictionary Comprehension**

Dictionary comprehension digunakan untuk membuat dictionary baru dengan **key-value pair** berdasarkan iterasi dan kondisi tertentu.

#### **Contoh: Dictionary angka dan kuadratnya**

```python
kuadrat_dict = {x: x ** 2 for x in range(1, 6)}
print(kuadrat_dict)  # Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
```

***

### **Kesimpulan**

* **List Comprehension** menghasilkan list baru dengan ekspresi dan kondisi tertentu.
* **Set Comprehension** menghasilkan set baru dengan elemen unik.
* **Dictionary Comprehension** membuat dictionary berdasarkan iterasi tertentu.

{% embed url="<https://trinket.io/python/568ed74b0e37?showInstructions=true>" %}
