pythontuplesetPemula5 mnt baca

Tuple dan Set di Python

Kenalan dengan tuple yang anti-diubah (plus trik unpacking) dan set yang otomatis membuang duplikat serta jago operasi himpunan.

Analogi: paket tersegel dan kantong kelereng

Bayangkan dua wadah. Wadah pertama adalah paket kiriman yang sudah disegel lakban: isinya tetap, tidak bisa ditambah atau diganti. Kalau mau isinya beda, kamu harus bikin paket baru. Itulah tuple.

Wadah kedua adalah kantong kelereng: setiap kelereng di dalamnya pasti unik, tidak ada kembaran. Kalau kamu memasukkan kelereng yang sama, ia otomatis ditolak. Itulah set.

Keduanya melengkapi list: tuple untuk data yang tidak boleh berubah, set untuk data yang harus unik.

Kenapa konsep ini ada?

List itu fleksibel, tapi fleksibilitas ada harganya. Kadang kamu butuh jaminan bahwa data tidak berubah di tengah jalan, misalnya koordinat atau konfigurasi yang kalau diubah diam-diam bisa merusak program. Tuple memberi jaminan itu.

Di sisi lain, data nyata penuh duplikat: daftar email pelanggan yang dobel, kategori produk yang berulang. Mengecek duplikat satu per satu dengan list itu lambat. Set menyimpan data dengan cara yang membuat pengecekan "apakah X sudah ada?" super cepat, plus operasi himpunan bawaan seperti irisan dan gabungan.

Tuple: tidak bisa diubah, tapi bisa dibongkar

python
# tuple dibuat dengan kurung biasa
koordinat = (10, 20)
print(koordinat[0])  # 10

# mencoba mengubah -> error!
# koordinat[0] = 99   # TypeError

# unpacking: bongkar isi tuple ke variabel
x, y = koordinat
print(x, y)  # 10 20

# tukar dua variabel tanpa variabel bantu
a, b = 5, 9
a, b = b, a
print(a, b)  # 9 5

Kapan pakai tuple, bukan list? Kalau datanya tetap secara makna: koordinat, tanggal (tahun, bulan, hari), konfigurasi, atau key yang butuh struktur tetap.

Set: unik otomatis dan operasi himpunan

python
# duplikat otomatis hilang
angka = {1, 2, 2, 3, 3, 3}
print(angka)  # {1, 2, 3}

# tambah dan hapus
angka.add(4)
angka.discard(2)
print(angka)  # {1, 3, 4}

# operasi himpunan
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b)  # gabungan: {1, 2, 3, 4, 5, 6}
print(a & b)  # irisan: {3, 4}
print(a - b)  # selisih (di a tapi tidak di b): {1, 2}

Catatan teknis: Set tidak punya urutan dan tidak bisa diindeks (angka[0] error). Kalau butuh urutan, ubah dulu jadi list yang diurutkan: sorted(angka).

Contoh 1: membersihkan email duplikat

python
# data mentah dari dua sumber, banyak yang dobel
sumber_a = ["[email protected]", "[email protected]", "[email protected]"]
sumber_b = ["[email protected]", "[email protected]", "[email protected]"]

# gabungkan lalu unikkan dalam dua baris
semua = set(sumber_a) | set(sumber_b)
print(sorted(semua))
# ['[email protected]', '[email protected]', '[email protected]', '[email protected]']

# siapa yang ada di kedua sumber? (irisan)
kembar = set(sumber_a) & set(sumber_b)
print(kembar)  # {'[email protected]'}

Contoh 2: tuple untuk data berpasangan yang tetap

python
# tiap transaksi: (id, nominal) -> tidak boleh berubah setelah dicatat
transaksi = [
    ("TRX001", 15000),
    ("TRX002", 8000),
    ("TRX003", 12000),
]

total = 0
for kode, nominal in transaksi:  # unpacking langsung di loop
    print(kode, "sebesar Rp", nominal)
    total += nominal

print("Total pemasukan: Rp", total)

Kesalahan umum pemula

SALAH: tuple satu elemen tanpa koma

python
satu = (5)
print(type(satu))  # <class 'int'>  BUKAN tuple!

BENAR: tambah koma di belakangnya

python
satu = (5,)
print(type(satu))  # <class 'tuple'>

SALAH: mencoba mengubah isi tuple

python
hari = ("Senin", "Selasa")
hari[0] = "Ahad"  # TypeError: 'tuple' object does not support item assignment

BENAR: buat tuple baru kalau butuh versi berbeda

python
hari = ("Senin", "Selasa")
hari = ("Ahad",) + hari[1:]
print(hari)  # ('Ahad', 'Selasa')

SALAH: mengindeks set seperti list

python
unik = {1, 2, 3}
print(unik[0])  # TypeError: 'set' object is not subscriptable

BENAR: iterasi langsung, atau ubah ke list bila butuh indeks

python
unik = {1, 2, 3}
for u in unik:
    print(u)
print(sorted(unik)[0])  # 1

Tantangan

Kategori Unik Produk

Diberi list tuple (nama_produk, kategori) dengan beberapa kategori dobel. Pakai set untuk mencetak daftar kategori unik yang terurut, lalu hitung ada berapa kategori.