Estimasi Waktu Baca: 6 menit

Pengenalan Set

Set merupakan tipe data tak berurut, karena pada set tidak dikenal yang namanya indeks. Jadi posisi setiap anggota set tidak jelas. Meskipun begitu set memiliki kelebihan yang tidak dimiliki tipe data lain yaitu set memiliki anggota yang unik (unique), yang artinya antar anggota satu dengan yang lain tidak ada yang sama (duplikat).

Lalu bagaimana jika kita memaksa untuk memasukkan data atau anggota yang bernilai sama?

Untuk menjawabnya kita simak bersama penjelasan di bawah ini.

Cara Membuat Set

Untuk membuat set kita butuh tanda kurung kurawal dengan setiap anggota di dalamnya dipisahkan dengan tanda koma.

>>> angka = {0, 1, 2, 3, 4, 5}
>>> type(angka)
<class 'set'>

Sudah disinggung di awal tadi, bahwa set bersifat unik yang memungkinkan kita untuk memiliki anggota yang berbeda nilainya, tidak ada yang sama antar setiap anggota. Jika ada anggota yang nilainya sama maka akan dipilih salah satu yang paling dulu dimasukkan, sedangkan yang satunya lagi akan diabaikan atau dihapus.

>>> angka = {0, 1, 2, 3, 4, 5, 1, 2}
>>> angka
{0, 1, 2, 3, 4, 5}

Pada kode di atas kita tambahkan dua anggota masing-masing bernilai 1 dan 2. Saat dicetak ternyata kedua nilai tersebut tidak ada, hal ini dikarenakan set menghapusnya karena mendeteksi bahwa nilai 1 dan 2 sudah ada sebelumnya.

Macam Anggota Set

Sebelum masuk ke situ, saya ingin jelaskan sedikit bahwa penyebutan isi dalam set bisa kalian sebut sebagai data, item, elemen, atau anggota. Kalau saya lebih suka menyebutnya anggota.

Lanjut, anggota set dapat terdiri dari semua tipe data, kecuali tipe data list, dictionary, dan set itu sendiri. Kemudian untuk satu rangkaiannya bisa terdiri dari tipe yang sama atau bahkan campuran dari berbagai tipe. Untuk mengetahui bagaimana set bekerja dengan anggota dalam berbagai tipe kita akan ulas satu-satu di bawah ini.

Set Beranggotakan Tipe Data Numerik

Terdapat tiga tipe yang termasuk ke dalam tipe data numerik, antara lain integer, float, dan complex. Ketiganya dapat menjadi anggota set

>>> # Set Beranggotakan bilangan bulat (integer) 
... bulat = {1, 2, 3, 4, 5} 
>>> bulat 
{1, 2, 3, 4, 5}

>>> # Set Beranggotakan bilangan desimal (float) 
... desimal = {1.0, 2.0, 3.0, 4.0, 5.0} 
>>> desimal 
{1.0, 2.0, 3.0, 4.0, 5.0} 

>>> # Set Beranggotakan bilangan kompleks (complex) 
... kompleks = {1j, 2j, 3j, 4j, 5j} 
>>> kompleks 
{1j, 2j, 3j, 4j, 5j}
Python

Set Beranggotakan Tipe Data String

Tipe data string atau tipe data teks juga dapat menjadi anggota set, meskipun kita tahu bahwa tipe data ini juga termasuk ke dalam tipe data berurut

>>> teks = {"Ani", "Budi", "Cita", "Dika", "Ega"} 
>>> teks 
{'Ani', 'Budi', 'Cita', 'Dika', 'Ega'}

Pada anggota bertipe string, set masih berbaik hati dengan membedakan besar kecilnya huruf.

>>> teks = {"A", "a"}
>>> teks
{'A', 'a'}

Set Beranggotakan Tipe Data Boolean

Tipe data boolean terdiri dari dua nilai, True dan False. Meskipun hanya terdiri dari dua nilai, tipe data ini juga dapat menjadi anggota set

>>> boolean = {True, False} 
>>> boolean 
{True, False}

Perlu diingat untuk tipe data boolean sebagai anggota set untuk nilai True dan False sama dengan nilai 0 dan 1. Jadi ketika kalian sejajarkan nilai True dengan 1 atau 0 dengan False maka salah satu dari nilai tersebut akan dihapus.

>>> # True = 1
... himpunan = {True, 1}
>>> himpunan
{True}

>>> # False = 0
... himpunan = {0, False}
>>> himpunan
{0}

Hal ini bisa terjadi karena pada kebanyakan bahasa pemrograman termasuk python, angka 0 merupakan perwakilan untuk nilai salah (False) dan angka 1 perwakilan dari nilai benar (True).

Sebenarnya pada python selama sesuatu tidak bernilai 0 atau none maka ia dianggap benar.

Set Beranggotakan Tipe Data Tuple

Selain string yang sudah disebutkan sebelumnya, keanggotaan set juga dapat terdiri dari tipe data berurut lain seperti tuple.

>>> tuple_ = {(1, 2, 3), (4, 5, 6), (7, 8, 9)} 
>>> tuple_ 
{(1, 2, 3), (4, 5, 6), (7, 8, 9)}

Tipe Data Yang Tidak Dapat Menjadi Anggota Set

Seperti sudah dijelaskan sebelumnya bahwa tidak semua tipe data bisa menjadi anggota set, ada beberapa yang tidak diizinkan menjadi anggota set seperti list, dictionary, dan set itu sendiri.

>>> # Set dengan anggota List
... daftar = {[1, 2, 3]}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'list'

>>> # Set dengan anggota sesama Set 
... himpunan = {{1, 2, 3}}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'set'

>>> # Set dengan anggota Dictionary 
... kamus = {{1:"A"}}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'dict'

Cara Mengakses Set

Karena set tidak memiliki indeks yang mengakibatkan anggota set tidak jelas posisinya, maka penggunaan teknik pengindeksan secara manual dan teknik slicing tidak dapat diterapkan di sini. Namun meskipun begitu anggota tipe data ini masih bisa diakses dengan menggunakan perulangan. Hal ini karena….

Menggunakan Perulangan

Tipe data set termasuk salah satu objek iterasi. Objek iterasi sendiri merupakan objek yang dapat menghasilkan proses pengulangan, yang mana dari hal ini kita dapat menggunakan perulangan untuk mengakses anggotanya. Objek iterasi mencakup semua tipe data yang masuk ke dalam kategori struktur data, selain itu string juga termasuk objek iterasi.

>>> siswa = {"Ani", "Budi", "Cita", "Dika", "Ega"} 
>>> for i in siswa:
...  print(i)
... 
Ani
Budi
Cita
Dika
Ega
Python

Berikut contoh lain penggunaan perulangan untuk menampilkan tiap tipe data anggota set.

>>> anggota = {1, 1.1, 1j, "1", False, (1, 1)}
>>> for i in anggota:
...  print(type(i))
... 
<class 'bool'>
<class 'int'>
<class 'float'>
<class 'complex'>
<class 'str'>
<class 'tuple'>

Membongkar Set

Membongkar set atau juga bisa disebut unpacking set merupakan proses untuk mengambil seluruh anggota di dalam suatu set dengan cara membagikannya ke beberapa variabel sekaligus. Sedangkan untuk proses pembuatannya dapat disebut packing.

>>> # Proses Packing
... data = {1, "Ani", 20, "Surabaya"}
 
>>> # Proses Unpacking
... absen, nama, umur, asal = data
>>> absen
1
>>> nama
'Ani'
>>> umur
20
>>> asal
'Surabaya'

Pada kode tersebut variabel data yang merupakan set dengan anggota di dalamnya yang beragam ‘membagikan’ setiap anggotanya kepada variabel lain secara berurutan. Variabel absen mendapat data pertama, bergeser ke kanan variabel nama mendapat data kedua, dan seterusnya.

Set Bersifat Mutable

Mutable artinya data di dalam set dapat diubah, sama seperti list. Untuk membuktikan bahwa set bersifat mutable, kita tidak bisa melakukannya dengan cara pengindeksan secara manual. Kita butuh sebuah fungsi, dalam kasus ini kita coba merubah isi set dengan menambahkan satu anggota di dalamnya

>>> himpunan = {1, 2, 3, 4, 5}
>>> himpunan.add(0)
>>> himpunan
{0, 1, 2, 3, 4, 5}

Lawannya adalah immutable (tidak bisa diubah) seperti string dan tuple.

>>> # Immutable pada Tuple 
... siswa = ("Ani", "Budi", "Cita", "Dika", "Ega")
>>> siswa[2] = "Fani"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment

>>> # Immutable pada String
... angka = "012345"
>>> angka[2] = "9"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment

Berbagai Fungsi Penting Dalam Set

Karena bersifat mutable, berarti keanggotaan set dapat dimanipulasi. Manipulasi ini mencakup menambah anggota, menghapus, dan masih banyak lagi. Hal-hal tersebut dapat dilakukan dengan penggunaan fungsi bawaan python.

Menambah Anggota Set

Untuk menambah satu anggota set dapat menggunakan fungsi add().

>>> angka = {0, 1, 2, 3, 4}
>>> angka.add(5)
>>> angka
{0, 1, 2, 3, 4, 5}

Sedangkan jika ingin menambahkan banyak anggota sekaligus maka gunakan fungsi update(). Fungsi update akan menambahkan atau menggabungkan set yang kita miliki dengan objek iterasi seperti string, list, tuple, dictionary, dan bahkan set itu sendiri.

>>> angka = {0}

>>> # Menambah set dengan anggota bertipe String 
... angka.update("123")
>>> angka
{0, '3', '2', '1'}

>>> # Menambah set dengan anggota bertipe List
... angka.update([4, 5, 6])
>>> angka
{0, 4, '1', 5, 6, '3', '2'}

>>> # Menambah set dengan anggota bertipe Tuple
... angka.update((7, 8, 9))
>>> angka
{0, 4, '1', 5, 6, 7, 8, 9, '3', '2'}

>>> # Menambah set dengan anggota bertipe Set
... angka.update({10, 11, 12})
>>> angka
{0, 4, '1', 5, 6, 7, 8, 9, 10, 11, 12, '3', '2'}

>>> # Menambah set dengan anggota bertipe Dictionary
... angka.update({13 : "a", 14 : "b", 15 : "c"})
>>> angka
{0, 4, '1', 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, '3', '2'}

Walaupun anggota baru tersebut berbentuk rangkaian data, namun ketika sudah masuk menjadi anggota set, mereka akan dipisah sendiri-sendiri.

Untuk anggota string nilainya masih tetap menjadi string dan untuk tipe data dictionary, fungsi update() hanya mengambil key-nya saja.

Menghapus Anggota Set

Ada 4 fungsi untuk menghapus isi atau anggota dalam set, fungsi-fungsi tersebut antara lain remove(), discard(), pop(), clear().

>>> angka
{0, 4, '1', 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, '3', '2'}
>>> angka.remove('1')
>>> angka
{0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, '3', '2'}
>>> angka.discard(4)
>>> angka
{0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, '3', '2'}

Menggunakan fungsi pop(), fungsi ini akan menghapus anggota dari sebelah kiri ke sebelah kanan.

>>> angka = {1, 2, 3, 4, 5}
>>> angka.pop()
1
>>> angka
{2, 3, 4, 5}
>>> angka.pop()
2
>>> angka
{3, 4, 5}
>>> angka.pop()
3
>>> angka
{4, 5}
>>> angka.pop()
4
>>> angka
{5}
>>> angka.pop()
5
>>> angka
set()

Sedangkan jika ingin menghapus semua anggota sekaligus, gunakan fungsi clear().

>>> angka = {1, 2, 3, 4, 5}
>>> angka.clear()
>>> angka
set()

Konversi Tipe Data Set

Python juga membuat sebuah fungsi yaitu set() untuk mengkonversi suatu objek iterasi ke dalam bentuk set.

>>> # Fungsi set() pada List
... nomor = [1, 2, 3, 4, 5]
>>> set(nomor)
{1, 2, 3, 4, 5}

>>> # Fungsi set() pada String
... sekolah = "Sekolah Kopi"
>>> set(sekolah)
{'o', 'h', 'l', 'k', 'e', 'S', 'a', 'p', 'i', 'K', ' '}

>>> # Fungsi set() pada Tuple
... siswa = ("Ani", "Budi", "Cika", "Denis", "Erika")
>>> set(siswa)
{'Denis', 'Ani', 'Budi', 'Cika', 'Erika'}

>>> # Fungsi set() pada Dictionary
... absensi = {1:"Ani", 2:"Budi", 3:"Cika", 4:"Denis", 5:"Erika"} 
>>> set(absensi)
{1, 2, 3, 4, 5}

Sedangkan jika kita tetap memaksa untuk menggunakan objek non-iterasi, maka akan menimbulkan error.

>>> # Objek iterasi 
... set([1])
>>> {1}

>>> # Objek non-iterasi
... set(1)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not iterable

Fungsi set() hanya membutuhkan satu parameter yaitu objek iterasi itu sendiri dan ini juga bersifat opsional. Dengan kata lain kita juga bisa mendeklarasikannya dengan nilai kosong.

>>> himpunan = set()
>>> himpunan
set()