Tuple dan Set
Lebih jarang dipakai daripada list dan dictionary, tapi masing-masing menyelesaikan satu masalah dengan sangat rapi.
Intisari
- Tuple
(1, 2, 3)— seperti list, tapi isinya tidak bisa diubah setelah dibuat. - Tuple muncul sendiri saat kamu menulis
a, b = 1, 2atau saat fungsi mengembalikan beberapa nilai. - Set
{1, 2, 3}— kumpulan tanpa kembar dan tanpa urutan. - Cara tercepat membuang data kembar:
list(set(data)). - Set kosong ditulis
set().{}yang kosong berarti dictionary, bukan set.
Tuple — list yang dikunci
koordinat = (10, 20)
warna = ("merah", "hijau", "biru")
print(koordinat[0]) # 10 dibaca sama seperti list
print(len(warna)) # 3
koordinat[0] = 99
# TypeError: 'tuple' object does not support item assignment
Kalau isinya tidak bisa diubah, apa gunanya? Tiga alasan:
- Menyatakan maksud. Tuple memberi tahu pembaca kode: “ini satu kesatuan, jangan diutak-atik.”
- Aman dari perubahan tak sengaja. Tidak ada bagian program lain yang bisa diam-diam menambah isinya.
- Bisa jadi kunci dictionary. List tidak bisa, tuple bisa:
{(0, 0): "pusat"}.
Kamu sudah memakai tuple tanpa sadar
a, b = 1, 2 # sisi kanan sebenarnya tuple (1, 2)
a, b = b, a # tukar isi dua variabel dalam satu baris
for i, nilai in enumerate(data): # enumerate menyerahkan tuple tiap putaran
...
Membongkar tuple ke beberapa variabel sekaligus disebut unpacking, dan ini idiom Python yang sangat khas:
titik = (3, 7)
x, y = titik
print(f"x={x}, y={y}") # x=3, y=7
Tuple berisi satu item butuh koma: (5) hanyalah angka 5 di dalam kurung biasa.
Yang benar adalah (5,). Aneh, tapi begitulah aturannya.
Set — tanpa kembar
angka = {1, 2, 3, 3, 3}
print(angka) # {1, 2, 3} ← kembarannya hilang sendiri
angka.add(4)
angka.discard(1) # buang, tidak error kalau tidak ada
print(3 in angka) # True
Kegunaan paling sering — membersihkan data kembar:
tamu = ["Ani", "Budi", "Ani", "Cici", "Budi"]
unik = list(set(tamu))
print(unik) # ['Budi', 'Ani', 'Cici'] ← urutannya acak
print(len(set(tamu))) # 3 → berapa orang yang berbeda
Set tidak menyimpan urutan. Kalau urutannya penting, urutkan setelahnya:
sorted(set(tamu)).
Operasi himpunan
kelas_a = {"Ani", "Budi", "Cici"}
kelas_b = {"Budi", "Doni"}
kelas_a & kelas_b # {'Budi'} ikut keduanya
kelas_a | kelas_b # {'Ani','Budi','Cici','Doni'} gabungan
kelas_a - kelas_b # {'Ani', 'Cici'} hanya di kelas A
Menjawab pertanyaan “siapa yang ada di dua-duanya” dalam satu karakter, tanpa perulangan bersarang.
Memilih yang mana
| Butuh | Pakai | Ditulis |
|---|---|---|
| Deretan data yang bisa berubah | list | [1, 2, 3] |
| Data berpasangan nama–nilai | dict | {"a": 1} |
| Data tetap yang tidak boleh berubah | tuple | (1, 2) |
| Kumpulan unik / cek keanggotaan cepat | set | {1, 2, 3} |
Kalau ragu di antara semuanya, pilih list atau dictionary. Dua itu menutupi mayoritas kebutuhan; tuple dan set dipakai saat masalahnya memang persis cocok.
Latihan: dari sebuah kalimat, hitung berapa kata unik yang dipakai
(petunjuk: kalimat.split() lalu set), dan tampilkan daftar kata uniknya secara terurut.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.