Tuple & Set — Python

Tuple & Set Tuple — Immutable List Tuple seperti list, tapi tidak bisa diubah setelah dibuat. koordinat = (10, 20) warna = ("merah", "hijau", "biru") # Akses…

Selain list, Python punya dua wadah lagi. Tuple adalah daftar berurutan yang dikunci: setelah dibuat, isinya gak bisa diubah. Set adalah kumpulan nilai unik tanpa urutan. Bayangin dua benda di Warung Kopi Pak Darto. Tuple itu struk yang sudah dicetak: urutannya tetap, dan tulisannya gak bisa dicoret. Set itu cap "sudah terjual" di papan menu: kopi susu dipesan tiga kali, tapi capnya tetap satu, dan cap-cap itu gak punya nomor urut.

🧪 Tebakan cepat: terjual = {"kopi susu", "teh manis", "kopi susu"}, lalu print(len(terjual)). Hasilnya 3 atau 2? Tebak dulu, jawabannya ada di bagian "Set: tiap nilai cuma sekali".

Tuple: daftar yang dikunci

struk = ("kopi susu", 15000)

print(struk)          # ('kopi susu', 15000)
print(struk[0])       # kopi susu
print(len(struk))     # 2
print(type(struk))    # <class 'tuple'>
Traceback (most recent call last):
  File "/home/darto/warung.py", line 2, in <module>
    struk[1] = 12000
    ~~~~~^^^
TypeError: 'tuple' object does not support item assignment

Unpacking: membongkar tuple

struk = ("kopi susu", 15000)
nama, harga = struk
print(nama)    # kopi susu
print(harga)   # 15000

Set: tiap nilai cuma sekali

terjual = {"kopi susu", "teh manis", "kopi susu"}
print(len(terjual))   # 2

pesanan = ["kopi susu", "teh manis", "kopi susu", "roti bakar", "kopi susu"]
menu_laku = set(pesanan)
print(len(pesanan), len(menu_laku))   # 5 3
print("teh manis" in menu_laku)       # True

Set gak punya urutan. Untuk teks, urutan cetaknya bahkan bisa beda tiap kali program dijalankan:

$ python3 warung.py
{'kopi susu', 'teh manis'}
$ python3 warung.py
{'teh manis', 'kopi susu'}

Karena gak ada urutan, gak ada indeks juga. terjual[0] ditolak dengan TypeError: 'set' object is not subscriptable. Butuh urutan yang pasti? sorted(terjual) membuat list yang urut.

Operasi himpunan

Pak Darto mencatat nomor meja yang pesan kopi dan nomor meja yang pesan roti:

meja_kopi = {1, 2, 3, 4}
meja_roti = {3, 4, 5, 6}

print(meja_kopi & meja_roti)   # {3, 4}
print(meja_kopi | meja_roti)   # {1, 2, 3, 4, 5, 6}
print(meja_kopi - meja_roti)   # {1, 2}
Operator Nama Artinya di warung
a & b irisan (intersection) meja yang pesan kopi dan roti
a | b gabungan (union) meja yang pesan kopi atau roti
a - b selisih (difference) meja yang pesan kopi tapi gak pesan roti

Hasilnya selalu set baru. Jadi {1, 2, 3, 4} & {3, 4, 5, 6} adalah {3, 4}: nilai yang ada di kedua set.

Kapan pakai yang mana

Wadah Ditulis Urutan dan indeks Bisa diubah Nilai dobel
list [ ] ada ya boleh
tuple ( ) ada tidak boleh
set { } atau set() gak ada ya, lewat .add dan .remove dibuang
dict {key: value} urutan masuk, dicari lewat key ya key gak boleh dobel

Perbedaan utama tuple dan list cuma satu: tuple immutable, list mutable.

⚠️ Jebakan yang sering ketemu

TL;DR: Tuple ( ) berurutan seperti list tapi immutable: struk[1] = 12000 jadi TypeError: 'tuple' object does not support item assignment, dan itulah beda utama tuple dan list. Unpacking nama, harga = struk membongkar tuple ke beberapa variabel, dan tuple satu item ditulis (42,). Set { } menyimpan nilai unik tanpa urutan dan tanpa indeks: duplikat dibuang, urutan cetaknya bisa beda tiap run, dan set kosong ditulis set(). Operasi himpunan: & irisan, | gabungan, - selisih, jadi {1, 2, 3, 4} & {3, 4, 5, 6} adalah {3, 4}.

Yang akan kamu pelajari