Belajar dengan membaca secara berurutan

Cara Pakai Tuple di Python

Pelajari tuple Python dari dasar. Cakup deklarasi, imutabilitas, unpacking, dan alasan tuple bisa menjadi key dict.

Apa itu tuple — versi « tidak bisa diubah » dari list

Tuple (tuple) membuat kamu bisa menggabungkan banyak nilai ke dalam satu variabel. Sangat mirip dengan list yang kamu pelajari di artikel sebelumnya, tapi bedanya adalah setelah dibuat, isinya tidak bisa diubah lagi.

Kalau list itu kotak yang mau kamu isi-ulang terus (seperti daftar belanja), tuple adalah kotak yang dikunci sekali lalu dibiarkan — bayangkan koordinat (x, y) atau warna RGB (255, 0, 0).

list vs tuple
list[1, 2, 3]mutabletuple(1, 2, 3)immutabledeklarasisifatdeklarasisifat

Yang berbeda hanya jenis tanda kurung dan apakah bisa diubah atau tidak; perannya — menggabungkan banyak nilai — sama saja.

Kalau mau diubah-ubah pakai list, kalau tetap pakai tuple adalah panduan sederhana.

Untuk mendeklarasikannya, cukup letakkan nilai-nilai di dalam ( dan ), dipisah koma. Kalau list pakai [ ], tuple pakai ( ).

Akses elemen (index dan slicing) sama persis dengan list: [0] ambil elemen pertama, [-1] ambil elemen terakhir, [1:3] ambil potongan.

# Deklarasi tuple
fruits = ("apple", "banana", "lemon")

print(fruits)        # ('apple', 'banana', 'lemon')
print(type(fruits))  # <class 'tuple'>
print(fruits[0])     # apple
print(fruits[-1])    # lemon
print(fruits[1:])    # ('banana', 'lemon')  ← hasil slice juga tuple

# Campur beberapa tipe juga tidak masalah
profile = ("Budi", 28, 165.5)

Tuple satu elemen butuh koma di akhir

Kalau kamu tulis fruits = ("apple"), itu sebuah string, bukan tuple. ( ) juga dipakai sebagai tanda kurung matematika, jadi Python tidak bisa membedakan kalau hanya ada satu nilai di dalamnya.

Untuk membuat tuple satu elemen, tambahkan koma di akhir seperti ("apple",).

Python juga membolehkan kamu menghilangkan tanda kurung dan menulis seperti 1, 2, 3 sebagai tuple, tapi supaya mudah dibaca sebaiknya tetap pakai ( ).

Deklarasikan sebuah tuple dan ambil nilainya.

① Buat colors = ("red", "green", "blue") lalu pakai print() untuk menampilkan warna pertama dan terakhir.

② Cetak colors[0:2], lalu pakai type() untuk memastikan bahwa hasil slicing tetap berupa tuple.

(Kalau kode jalan dengan benar, penjelasan akan muncul.)

Python Editor

Jalankan kode untuk melihat output

Immutable — « ubah elemen » dan « tukar seluruh kotak » adalah dua hal berbeda

Tuple adalah tipe immutable (tidak bisa diubah). Setelah dibuat, kamu tidak bisa menimpa, menambah, atau menghapus elemen.

Yang sering bikin bingung adalah membedakan antara «mengubah elemen» dan «memasukkan tuple baru ke variabel». Yang pertama tidak bisa; yang kedua oke.

« Ubah elemen » vs « Tukar kotak »
t = (1,2,3)t[0] = 9TypeErrort = (1,2,3)t = (4,5,6)arah ketuple baruelemengagalreassignOK

t[0] = 9 mencoba menyunting isinya langsung, jadi error.

t = (4, 5, 6) hanya mengarahkan variabel ke tuple baru, jadi tidak masalah.

Mari pastikan bahwa mengubah elemen tuple memang menyebabkan error.

① Jalankan kode di bawah apa adanya. Kamu akan melihat TypeError.

② Setelah melihat error, beri comment pada baris my_tuple[0] = 9 (tambah # di depan), lalu tambahkan my_tuple = (9, 2, 3) dan cetak my_tuple. Kali ini tidak error.

Python Editor

Jalankan kode untuk melihat output

Penggabungan dan method (count / index)

Kamu bisa membuat tuple baru dengan menggabungkan dua tuple. Pakai + untuk menggabungkan akan menghasilkan tuple yang sepenuhnya baru.

Method-nya tidak banyak — dua yang benar-benar kamu pakai adalah count dan index. Rasanya sama persis dengan list.

Yang ingin dilakukanCara menulisCatatan
Gabungt1 + t2Kembalikan tuple baru; yang asli tidak berubah
Tambah satu element + (x,)Jangan lupa koma di akhir
Hitung nilait.count(x)Berapa kali x muncul
Cari posisit.index(x)Posisi pertama x muncul
fruits = ("apple", "banana", "lemon")

# Gabung (kembalikan tuple baru)
more = fruits + ("grape",)
print(more)            # ('apple', 'banana', 'lemon', 'grape')
print(fruits)          # ('apple', 'banana', 'lemon')  ← yang asli tidak berubah

# count dan index
nums = (1, 2, 2, 3, 2, 4)
print(nums.count(2))   # 3 (ada tiga angka 2)
print(nums.index(3))   # 3 (3 ada di posisi ke-4 = index 3)

# Konversi antara list dan tuple
list_fruits  = list(fruits)   # ['apple', 'banana', 'lemon']
tuple_fruits = tuple(list_fruits)  # ('apple', 'banana', 'lemon')

Kalau perlu banyak perubahan, ganti ke list

Tuple itu untuk «nilai yang hampir tidak disentuh», jadi tidak cocok kalau kamu harus sering menambah/menghapus elemen. Pola standar: konversi ke list pakai list(t) → sunting → kalau perlu kembalikan ke tuple pakai tuple(...).

Ambil informasi dari tuple hari-hari dalam seminggu.

days = ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") sudah disiapkan.

① Pakai days.index("Fri") dengan print() untuk mencetak posisi dari "Fri".

② Buat weekend = ("Sat", "Sun"), lalu cetak days + weekend untuk melihat hasil gabungannya (tidak masalah kalau ada elemen yang duplikat).

Python Editor

Jalankan kode untuk melihat output

Unpacking dan key dict — hal yang hanya bisa dilakukan tuple

Ada dua hal yang bisa dilakukan tuple tapi tidak bisa dilakukan list: unpacking dan dipakai sebagai key dict.

Unpacking — memecah ke beberapa variabel dalam satu baris
coord=(135, 35)lng, lat= coordlng=135lat=35assignunpack

Letakkan nama-nama variabel dipisah koma di sisi kiri, dan setiap elemen tuple akan langsung masuk ke masing-masing variabel.

Urutan cocok berdasarkan posisi, dan jumlah variabel harus sama dengan jumlah elemen.

# Unpacking
coord = (135.0, 35.0)
longitude, latitude = coord
print(longitude)   # 135.0
print(latitude)    # 35.0

# Bisa juga unpack dari literal
r, g, b = (255, 128, 0)
print(r, g, b)     # 255 128 0

# Trik yang sering dipakai: tukar dua nilai dalam satu baris
a, b = 1, 2
a, b = b, a
print(a, b)        # 2 1

Nilai kembalian fungsi juga tuple (sneak peek)

Fungsi di Python bisa mengembalikan beberapa nilai dengan return a, b, dan nilai-nilai itu akan otomatis dibungkus menjadi tuple. Pemanggil menulis x, y = func() untuk meng-unpack menjadi dua variabel. Bab fungsi akan dibahas nanti, jadi di sini tidak mendalam — tapi ingat bahwa «multiple return dan unpacking berjalan bersama» akan bantu kamu paham bab itu lebih cepat.

Unpack sebuah warna RGB.

rgb = (200, 100, 50) sudah tersedia.

① Pakai unpacking untuk mengambil nilai merah / hijau / biru ke tiga variabel r, g, b.

② Pakai print() untuk mencetak r, g, b masing-masing di baris terpisah.

Python Editor

Jalankan kode untuk melihat output

Kelebihan lainnya adalah tuple bisa dipakai sebagai key dict. list tidak bisa jadi key dict, tapi tuple bisa. Sangat berguna kalau kamu ingin memakai kombinasi beberapa nilai sebagai satu key unik — misalnya, memetakan koordinat ke nama negara.

tuple bisa jadi key dict
(135,35)tuplekeydictOK[135,35]listkeydictTypeError
# dict dengan key tuple
country = {
    (135.0, 35.0): "Japan",
    (-77.0, 38.9): "USA",
}
print(country[(135.0, 35.0)])   # Japan
print(country.get((0.0, 0.0), "Tidak diketahui"))   # Tidak diketahui

# list tidak bisa jadi key
# bad = {[135.0, 35.0]: "Japan"}  # TypeError: unhashable type: 'list'

Buat dict yang menghubungkan koordinat dengan nama kota.

① Buat dict cities di mana key (35.0, 139.0) bernilai "Tokyo", dan key (34.7, 135.5) bernilai "Osaka".

② Cetak cities[(35.0, 139.0)] untuk memastikan Tokyo bisa didapat.

③ Cari (0.0, 0.0) pakai .get(), berikan "Tidak diketahui" sebagai argumen kedua, dan pastikan bahwa tetap jalan aman walaupun key-nya tidak ada.

Python Editor

Jalankan kode untuk melihat output

Di artikel ini, berpusat pada perbedaan dengan list, kamu sudah belajar cara mendeklarasikan tuple, arti immutable, penggabungan dan count / index, serta unpacking dan key dict.

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Dari pilihan berikut, mana yang mendeklarasikan sebuah tuple dengan benar?

Soal 2Dengan t = (1, 2, 3), pilihan mana yang tidak menyebabkan error?

Soal 3Dengan coord = (135.0, 35.0), cara paling sederhana untuk memecah dua nilai ke variabel lng dan lat adalah?