Tuple adalah list yang tidak bisa diubah
Sekilas, tuple dan list terlihat mirip: keduanya deret yang berurutan, keduanya mendukung indeks dan iterasi. Tapi satu perbedaan penting mengubah segalanya: tuple bersifat immutable. Begitu kamu membuat tuple, kamu tidak bisa menambah isinya, menghapus isinya, atau menukar sebuah item.
Tuple ditulis dengan tanda kurung (atau kadang tanpa tanda kurung):
Tuple berisi satu item butuh koma di belakang; kalau tidak, Python menganggap tanda kurungnya sekadar pengelompokan:
Untuk tuple kosong, pakai ():
Immutable dalam praktik
Coba ubah sebuah tuple, dan Python akan menghentikanmu:
Kamu bebas membaca dari tuple (indeks, slicing, iterasi, in), hanya saja kamu tidak bisa mengubahnya. Kalau kamu butuh tuple yang berbeda, buat yang baru.
Kenapa kamu mau sesuatu yang tidak bisa diubah?
Immutable terdengar seperti batasan, tapi sering justru itulah fitur yang kamu cari.
- Aman. Tuple yang kamu berikan ke sebuah fungsi tidak bisa diubah diam-diam di belakangmu.
- Hashable. Tuple berisi nilai immutable bisa dipakai sebagai key dictionary atau anggota set; list tidak bisa.
- Maksud yang jelas. Tuple berkata "ini record dengan bentuk tetap".
point = (3, 4)menyampaikan "dua koordinat" dengan lebih jelas daripadapoint = [3, 4].
Tuple bersinar untuk hal-hal seperti:
- Koordinat:
(x, y),(lat, lon) - Warna RGB:
(255, 128, 0) - Record:
(name, email, signup_date) - Mengembalikan beberapa nilai dari sebuah fungsi
Unpacking
Tuple dan sintaks unpacking memang diciptakan untuk satu sama lain:
Koma di sebelah kiri itulah yang melakukan unpacking. Python melihat dua nama dan sebuah tuple berisi dua nilai, lalu memasangkannya satu per satu.
Ini ada di mana-mana dalam kode Python yang idiomatis:
Kamu bisa memakai * untuk mengumpulkan "sisanya":
Praktis saat kamu hanya peduli pada elemen pertama dan terakhir.
Tuple sebagai key dictionary
Karena tuple hashable (selama isinya juga hashable), kamu bisa memakainya sebagai key dict. List tidak bisa melakukan ini:
Pola itu, memakai gabungan beberapa nilai sebagai key, ternyata sangat berguna. Bayangkan: "skor pengguna X pada hari Y" atau "rute terbaik dari A ke B".
Tuple untuk beberapa nilai kembalian
Fungsi yang perlu mengembalikan lebih dari satu hal biasanya mengembalikan tuple:
Fungsi bawaan Python sendiri, divmod(), melakukan persis hal ini. Penugasan dengan unpacking di kode pemanggil membuatnya terbaca alami.
Named tuple, saat posisi saja tidak cukup
Begitu tuple-mu berisi lebih dari dua atau tiga item, mengingat arti setiap posisi jadi melelahkan. collections.namedtuple mengatasinya:
Sekarang item-item tuple itu punya nama. Ia tetap immutable, tetap sebuah tuple (jadi unpacking dan indeks tetap bekerja), tapi cara mengaksesnya jauh lebih ramah. Untuk hal yang lebih rumit, ada dataclasses, yang akan kita temui nanti di bab class.
Tuple vs list: panduan singkat memilih
- Bentuk tetap, setiap posisi punya arti → tuple.
- Koleksi yang bisa bertambah atau berkurang → list.
- Mengembalikan beberapa nilai dari fungsi → tuple.
- Butuh key dict atau anggota set → tuple (list tidak bisa).
- Kamu akan mengubah isinya → list (tuple tidak mengizinkan).
Lanjut
Tuple menangani satu ujung spektrum: tetap, kecil, terstruktur. Berikutnya: set, yang mengerjakan tugas yang sama sekali berbeda, yaitu pengecekan keanggotaan yang cepat dan keunikan.
Pertanyaan yang sering diajukan
Apa itu tuple di Python?
Tuple adalah deret yang berurutan dan immutable, mirip list, tapi setelah dibuat kamu tidak bisa menambah, menghapus, atau mengubah item-nya. Tuple ditulis dengan tanda kurung: point = (3, 4).
Apa bedanya tuple dan list?
Keduanya deret yang berurutan. List bersifat mutable, bisa diubah setelah dibuat, sedangkan tuple immutable. Tuple biasanya dipakai untuk kumpulan kecil nilai yang menjadi satu "record", seperti koordinat atau beberapa nilai yang dikembalikan sebuah fungsi.
Kapan sebaiknya memakai tuple?
Pakai tuple saat kamu punya record berukuran tetap dan setiap posisinya punya arti: koordinat, warna RGB, satu baris database. Pakai juga tuple sebagai key dictionary atau anggota set, karena list tidak bisa dipakai di sana. Untuk semua kasus lain ketika koleksinya bisa bertambah atau berkurang, list adalah pilihan bawaannya.