Beberapa kelompok data sengaja tidak boleh berubah setelah dibuat: koordinat sebuah titik, komposisi warna RGB, atau nama hari dalam seminggu. Jika data seperti itu disimpan dalam list, tidak ada yang mencegah kode lain mengubah isinya tanpa sengaja. Tuple mengatasi masalah ini dengan menjadi struktur data terurut yang isinya dikunci permanen sejak dibuat.

Membuat Tuple #

Tuple ditulis dengan tanda kurung dan elemen yang dipisahkan koma. Tanda kurung sebenarnya opsional — Python cukup mengenali koma sebagai penanda tuple. Konsekuensinya ada satu jebakan klasik: tuple satu elemen wajib diakhiri koma.

python
titik = (3, 5)
warna = "merah", "hijau", "biru"  # tanda kurung opsional
satu = (42,)
bukan_tuple = (42)

print(titik)
print(warna)
print(satu)
print(bukan_tuple)
print(type(satu))
print(type(bukan_tuple))

Output yang Dihasilkan:

text
(3, 5)
('merah', 'hijau', 'biru')
(42,)
42
<class 'tuple'>
<class 'int'>

Mari kita telaah perbedaan dua baris terakhir:

  1. Baris 4 (satu = (42,)): koma di dalam kurung membuat interpreter Python membangun objek tuple berisi satu elemen.
  2. Baris 5 (bukan_tuple = (42)): tanpa koma, tanda kurung hanya mengelompokkan ekspresi, sehingga bukan_tuple berisi integer 42 biasa — terbukti dari output <class 'int'>.

Tuple Bersifat Immutable #

Mencoba mengubah elemen tuple langsung ditolak oleh interpreter Python dengan TypeError, bahkan sebelum baris tersebut selesai dievaluasi.

python
>>> warna = ("merah", "hijau", "biru")
>>> warna[0] = "kuning"
Traceback (most recent call last):
  ...
TypeError: 'tuple' object does not support item assignment

Yang terkunci adalah isi objek tuple, bukan variabelnya. Kita tetap boleh mengarahkan ulang variabel warna ke tuple lain yang berbeda, misalnya warna = ("biru",). Larangan hanya berlaku pada operasi yang mengubah tuple dari dalam, seperti penggantian elemen, append(), atau remove(). Pembahasan lebih mendalam mengenai perbedaan objek mutable dan immutable tersedia pada Chapter Mutable dan Immutable Objects.

Packing dan Unpacking #

Membuat tuple dari beberapa nilai disebut packing, dan memecah tuple kembali ke beberapa variabel disebut unpacking. Jumlah variabel di sisi kiri harus sama dengan jumlah elemen tuple; kalau tidak, Python memunculkan ValueError.

python
siswa = ("Budi", 20, "Jakarta")

nama, umur, kota = siswa
print(nama)
print(umur)
print(kota)

a = "kiri"
b = "kanan"
a, b = b, a
print(a, b)

Output yang Dihasilkan:

text
Budi
20
Jakarta
kanan kiri

Baris a, b = b, a adalah teknik menukar isi dua variabel tanpa variabel penampung sementara. Interpreter Python mengevaluasi sisi kanan (b, a) secara penuh menjadi tuple ("kanan", "kiri") terlebih dahulu, baru kemudian melakukan unpacking ke a dan b. Berkat urutan dua langkah tersebut, nilai lama tidak sempat tertimpa sebelum dipakai.

Tuple sebagai Key Dictionary #

Key dictionary di Python wajib hashable — singkatnya, nilainya tidak boleh berubah. Tuple memenuhi syarat ini karena immutable, sedangkan list tidak. Inilah alasan tuple menjadi satu-satunya pilihan saat kita butuh key gabungan, misalnya koordinat pada papan permainan.

python
papan = {
    (0, 0): "pemain",
    (1, 2): "musuh",
}

print(papan[(0, 0)])
print(papan[(1, 2)])

Output yang Dihasilkan:

text
pemain
musuh

Sebaliknya, memakai list sebagai key langsung ditolak interpreter Python:

python
>>> papan = {(0, 0): "pemain"}
>>> papan[[0, 0]] = "musuh"
Traceback (most recent call last):
  ...
TypeError: unhashable type: 'list'

Kapan Memakai Tuple #

Gunakan tuple ketika kelompok data merepresentasikan satu kesatuan yang ukuran dan isinya tetap. Beberapa penanda kuat:

  • Konstanta yang tidak boleh berubah: daftar hari, kode warna, dimensi gambar.
  • Nilai yang dikembalikan bersamaan: satu fungsi bisa mengembalikan beberapa nilai sekaligus dalam bentuk tuple, topik yang akan kita bahas pada Section Fungsi.
  • Key dictionary gabungan: seperti koordinat (baris, kolom) pada contoh papan di atas.
  • Sinyal niat ke pembaca kode: tuple menyatakan “kelompok nilai ini utuh dan tidak akan dimodifikasi”.

Jika data justru perlu bertambah, berkurang, atau diurutkan ulang, list adalah pilihan yang tepat. Perbandingan lengkap keempat struktur data beserta kriteria pemilihannya akan kita rangkum pada Chapter Memilih Struktur Data.