Hari 9: Tuple — Data Tidak Berubah & Unpacking
50 min
Last updated 26 Mar 2026
Apa itu Tuple?
Tuple mirip list, tapi immutable (tidak bisa diubah setelah dibuat). Ditulis dengan tanda kurung ().
koordinat = (10.5, -6.2)
warna_rgb = (255, 128, 0)
satu_elemen = (42,) # WAJIB ada koma!
tanpa_kurung = 1, 2, 3 # juga tuple
# Akses sama seperti list
print(koordinat[0]) # 10.5
print(warna_rgb[-1]) # 0
print(koordinat[0:]) # (10.5, -6.2)
Tuple vs List — Kapan Pakai Yang Mana?
| Tuple | List |
|---|---|
| Immutable (tidak bisa diubah) | Mutable (bisa diubah) |
| Lebih cepat & hemat memori | Lebih lambat sedikit |
| Data tetap: koordinat, RGB, hari | Data berubah: keranjang belanja |
| Bisa jadi key dictionary | Tidak bisa jadi key dictionary |
Unpacking Tuple
point = (3, 7)
x, y = point
print(f"x={x}, y={y}")
# Swap variabel (cara Python!)
a, b = 10, 20
a, b = b, a
print(a, b) # 20 10
# Extended unpacking
pertama, *tengah, terakhir = (1, 2, 3, 4, 5)
print(pertama) # 1
print(tengah) # [2, 3, 4]
print(terakhir) # 5
# Unpack nested
data = [("Ana", 90), ("Budi", 85), ("Citra", 92)]
for nama, nilai in data:
print(f"{nama}: {nilai}")
Operasi Tuple
t1 = (1, 2, 3)
t2 = (4, 5, 6)
print(t1 + t2) # (1, 2, 3, 4, 5, 6) — concatenation
print(t1 * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3) — repetition
print(len(t1)) # 3
print(3 in t1) # True
print(t1.count(2)) # 1
print(t1.index(2)) # 1
print(max(t1)) # 3
# Konversi
lst = list(t1) # tuple → list
tpl = tuple(lst) # list → tuple
Named Tuple — Tuple Bermakna
from collections import namedtuple
Titik = namedtuple("Titik", ["x", "y"])
Pegawai = namedtuple("Pegawai", ["nama", "jabatan", "gaji"])
p = Titik(3, 7)
print(p.x, p.y) # akses via nama
e = Pegawai("Budi", "Engineer", 10_000_000)
print(f"{e.nama} — {e.jabatan}: Rp {e.gaji:,}")Assignment
Buat program yang menyimpan data 5 kota sebagai tuple (nama, provinsi, populasi). Tampilkan kota dengan populasi terbesar dan urutkan berdasarkan nama kota.
Expected output:
Kota terbesar: Jakarta (10,500,000 jiwa)
Daftar kota (alfabetis):
Bandung | Jawa Barat | 2,500,000 jiwa
Jakarta | DKI Jakarta | 10,500,000 jiwa
Makassar | Sulawesi Selatan | 1,500,000 jiwa
Medan | Sumatera Utara | 2,400,000 jiwa
Surabaya | Jawa Timur | 2,900,000 jiwa
PY
main.py
Solution
Output