# Change List Items

Tipe data memiliki metode untuk **memodifikasi** isinya. Berikut adalah daftar lengkap metode dan teknik yang terkait dengan **modifikasi data** dalam **list, tuple, set, dictionary, string.**

***

### **1. Modifikasi List (Mutable)**

**List** bisa dimodifikasi secara langsung karena bersifat **mutable**.

#### ✅ **a. Menambah Elemen**

* `append(x)` → Tambah satu elemen di akhir
* `extend(iterable)` → Tambah banyak elemen dari iterable
* `insert(index, x)` → Sisipkan elemen pada posisi tertentu
* `+` (concatenation) → Gabungkan dua list

```python
lst = [1, 2, 3]
lst.append(4)  # [1, 2, 3, 4]
lst.extend([5, 6])  # [1, 2, 3, 4, 5, 6]
lst.insert(2, 99)  # [1, 2, 99, 3, 4, 5, 6]
```

#### ✅ **b. Menghapus Elemen**

* `remove(x)` → Hapus elemen pertama yang cocok
* `pop(index)` → Hapus elemen berdasarkan indeks
* `del lst[index]` → Hapus elemen dengan `del`
* `clear()` → Hapus semua elemen

```python
lst.remove(99)  # [1, 2, 3, 4, 5, 6]
lst.pop(1)  # Menghapus elemen indeks 1: [1, 3, 4, 5, 6]
del lst[2]  # Menghapus indeks ke-2: [1, 3, 5, 6]
lst.clear()  # Menghapus semua elemen: []
```

#### ✅ **c. Memodifikasi Elemen**

* `lst[index] = value` → Ubah nilai berdasarkan indeks
* `lst[start:end] = [...]` → Ubah beberapa elemen sekaligus

```python
lst = [1, 2, 3, 4, 5]
lst[1] = 99  # [1, 99, 3, 4, 5]
lst[2:4] = [7, 8]  # [1, 99, 7, 8, 5]
```

#### ✅ **d. Mengurutkan & Membalik List**

* `sort()` → Urutkan secara **ascending**
* `sort(reverse=True)` → Urutkan secara **descending**
* `reverse()` → Balik urutan elemen

```python
lst = [4, 2, 9, 1]
lst.sort()  # [1, 2, 4, 9]
lst.sort(reverse=True)  # [9, 4, 2, 1]
lst.reverse()  # [1, 2, 4, 9]
```

***

### **2. Modifikasi Tuple (Immutable)**

Tuple **tidak bisa diubah** secara langsung, tetapi ada trik:

* **Konversi ke list → Ubah → Kembali ke tuple**
* **Menggunakan operasi `+` untuk menambah elemen**

```python
tup = (1, 2, 3)
tup = list(tup)  # Ubah ke list
tup.append(4)  # Modifikasi
tup = tuple(tup)  # Kembali ke tuple
print(tup)  # (1, 2, 3, 4)
```

***

### **3. Modifikasi Set (Mutable)**

Set bersifat **mutable** tetapi **tidak berurutan**.

#### ✅ **a. Menambah Elemen**

* `add(x)` → Tambahkan satu elemen
* `update(iterable)` → Tambahkan banyak elemen

```python
s = {1, 2, 3}
s.add(4)  # {1, 2, 3, 4}
s.update([5, 6, 7])  # {1, 2, 3, 4, 5, 6, 7}
```

#### ✅ **b. Menghapus Elemen**

* `remove(x)` → Hapus elemen (error jika tidak ada)
* `discard(x)` → Hapus elemen (tidak error jika tidak ada)
* `pop()` → Hapus elemen acak
* `clear()` → Kosongkan set

```python
s.remove(3)  # {1, 2, 4, 5, 6, 7}
s.discard(99)  # Tidak error jika 99 tidak ada
s.pop()  # Hapus elemen acak
s.clear()  # Set kosong {}
```

***

### **4. Modifikasi Dictionary (Mutable)**

Dictionary bersifat **mutable** dan mendukung operasi modifikasi.

#### ✅ **a. Menambah atau Memperbarui Elemen**

* `dict[key] = value` → Tambah atau ubah elemen
* `update({key: value})` → Tambah atau ubah banyak elemen

```python
data = {"name": "Alice"}
data["age"] = 25  # Tambah elemen
data.update({"city": "New York", "job": "Engineer"})
print(data)  # {'name': 'Alice', 'age': 25, 'city': 'New York', 'job': 'Engineer'}
```

#### ✅ **b. Menghapus Elemen**

* `pop(key)` → Hapus key tertentu
* `popitem()` → Hapus elemen terakhir
* `del dict[key]` → Hapus key tertentu
* `clear()` → Kosongkan dictionary

```python
data.pop("age")  # Hapus 'age'
del data["city"]  # Hapus 'city'
data.clear()  # Kosongkan dictionary
```

***

### **5. Modifikasi String (Immutable)**

String **tidak bisa diubah** secara langsung, tetapi bisa dimodifikasi dengan metode berikut:

#### ✅ **a. Mengganti Substring**

* `replace(old, new)` → Ganti substring
* `translate()` + `maketrans()` → Ganti banyak karakter

```python
s = "hello world"
s = s.replace("world", "Python")  # "hello Python"
```

#### ✅ **b. Menggabungkan String**

* `+` → Menggabungkan string
* `join(iterable)` → Gabungkan elemen dengan pemisah

```python
s1 = "Hello"
s2 = "World"
print(s1 + " " + s2)  # "Hello World"

words = ["Python", "is", "awesome"]
print(" ".join(words))  # "Python is awesome"
```

#### ✅ **c. Menghapus Karakter**

* `strip()` → Hapus spasi di awal & akhir
* `lstrip()` → Hapus spasi kiri
* `rstrip()` → Hapus spasi kanan

```python
s = "  Hello  "
print(s.strip())  # "Hello"
```

***

### **Kesimpulan**

| **Tipe Data**  | **Operasi Modifikasi**                                                                           |
| -------------- | ------------------------------------------------------------------------------------------------ |
| **List**       | `append()`, `extend()`, `insert()`, `remove()`, `pop()`, `del`, `sort()`, `reverse()`, `clear()` |
| **Tuple**      | Tidak bisa diubah langsung → gunakan konversi `list()` atau gabung `+`                           |
| **Set**        | `add()`, `update()`, `remove()`, `discard()`, `pop()`, `clear()`                                 |
| **Dictionary** | `update()`, `pop()`, `popitem()`, `del`, `clear()`                                               |
| **String**     | `replace()`, `join()`, `strip()`, `lstrip()`, `rstrip()`, `+`                                    |
