Learn
← Previous Next →

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?

TupleList
Immutable (tidak bisa diubah)Mutable (bisa diubah)
Lebih cepat & hemat memoriLebih lambat sedikit
Data tetap: koordinat, RGB, hariData berubah: keranjang belanja
Bisa jadi key dictionaryTidak 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