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.
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:
(3, 5)
('merah', 'hijau', 'biru')
(42,)
42
<class 'tuple'>
<class 'int'>Mari kita telaah perbedaan dua baris terakhir:
- Baris 4 (
satu = (42,)): koma di dalam kurung membuat interpreter Python membangun objektupleberisi satu elemen. - Baris 5 (
bukan_tuple = (42)): tanpa koma, tanda kurung hanya mengelompokkan ekspresi, sehinggabukan_tupleberisi integer42biasa — 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.
>>> warna = ("merah", "hijau", "biru")
>>> warna[0] = "kuning"
Traceback (most recent call last):
...
TypeError: 'tuple' object does not support item assignmentYang 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.
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:
Budi
20
Jakarta
kanan kiriBaris 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.
papan = {
(0, 0): "pemain",
(1, 2): "musuh",
}
print(papan[(0, 0)])
print(papan[(1, 2)])Output yang Dihasilkan:
pemain
musuhSebaliknya, memakai list sebagai key langsung ditolak interpreter 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 contohpapandi 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.