lumakoo-tipe-data-set

Pada pertemuan yang lalu kita telah membahas berbagai macam tipe data pada python. Mulai dari tipe data yang bersifat asli seperti string, integer, boolean, dan float. Maupun tipe data terusan seperti list, tuple, dan dictionary.

Nah, setelah kita membahas tipe data dictionary pada seri ke #8, sekarang kita akan membahas tentang tipe data set pada python.

Apa itu tipe data set? 

Set dalam bahasa pemrograman python adalah tipe data koleektif yang digunakan untuk menyimpan banyak nilai ke dalam satu variabel dengan ketentuan:

  • nilai anggota yang disimpan harus unik (tidak duplikat)
  • nilai anggota yang sudah dimasukan tidak bisa diubah lagi
  • set bersifat unordered alias tidak berurut yang artinya tidak bisa diakses dengan index

untuk lebih memahami 3 poin diatas, kita akan langsung melakukan praktek.

Cara Membuat Set

Secara umum kita bisa membuat set dengan 2 cara: 

  • dengan kurung kurawal {}, atau
  • dengan sebuah list yang kita passing ke dalam fungsi set()

Perhatikan kode program berikut:

# menggunakan kurung kurawal
himpunan_siswa = {'Munir', 'Novia', 'Nazeea', 'Khawarizmi'}
print(himpunan_siswa)

# mengkonversi list ke dalam set
himpunan_buah = set(['nanas', 'pisang'])
print(himpunan_buah)

# set dengan tipe data yang berbeda-beda
set_campuran = {'manusia', 'hewan', 5, True, ('Nazeea', 'Khawarizmi')}
print(set_campuran)

Jika kita jalankan kode di atas, maka akan mendapatkan output sebagai berikut:

lumakoo-tipe-data-set

Set Bersifat Unordered

Tipe data set bersifat unordered alias tidak berurut. Itu artinya, kita tidak bisa menggunakan index untuk mengakses nilai pada set, kalaupun kita memaksa, kita hanya akan mendapatkan error. 

set_ku = {'a'}
print(set_ku[0])

Maka akan menghasilkan error seperti berikut:

lumakoo-tipe-data-set

Kita juga bisa perhatika kode program yang telah kita buat sebelumnya:

himpunan_siswa = {'Munir', 'Novia', 'Nazeea', 'Khawarizmi'}
print(himpunan_siswa)

Di mana kita mendefinisikan 4 anggota set dengan urutan: Munir, Novia, Nazeea, Khawarizmi

Akan tetapi setelah kita print, kita malah mendapatkan urutan yang berbeda:

{'Novia', 'Khawarizmi', 'Munir', 'Nazeea'}

Set Bersifat Unchangable

Set bersifat unchangable, yang berarti bahwa nilai yang sudah kita masukan ke dalam set, tidak bisa kita ubah lagi.

Akan tetapi, kita tetap bisa menambah dan menghapus angota pada set.

Dan karena set bersifat unchangable, set juga hanya bisa menerima anggota dari tipe data yang juga bersifat immutable.

Perhatikan contoh berikut:

# anggota set harus dari tipe data immutable
set_buah = {'mangga', 'lemon', 'alpukat', True, 1, 2, 3}

# kita bisa menjadikan tuplesebagai anggota
# karena ia bersifat immutable
papan_ketik = {
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9),
    (0)
}

Tapi tidak bisa memasuka list sebagai anggota karena list bersifat mutable, perhatikan contoh berikut:

x = {35, 100, ['a', 'b']}

Pesan error:

lumakoo-tipe-data-set

Tidak Bisa Menerima Nilai Duplikat

Selain itu set pada python juga tidak bisa menerima nilai duplikat. Jika kita memasukan nilai yang sudah ada pada suatu set, maka nilai tersebut hanya akan muncul atau dimasukan 1 kali saja.

Perhatikan contoj berikut:

list_kata = [
    'pagi', 'ini', 'adalah', 'pagi', 'yang', 'sangat', 'cerah'
]

print(list_kata)

Outputnya adalah:

lumakoo-tipe-data-list

Sedangkan jika kita masukkan string 'pagi' sebanyak 2 kali ke dalam set seperti ini:

list_kata = {
    'pagi', 'ini', 'adalah', 'pagi', 'yang', 'sangat', 'cerah'
}


# atau bisa langsung konversi list_kata menjadi set
# supaya lebih ringkas:
# kata_unik = set(list_kata)

print(kata_unik)

Maka kata 'pagi' akan dimasukan 1 kali saja:

lummakoo-set

Menambah Anggota Baru

Seperti yang kita singgung di atas bahwa meskipun nilai set tidak bisa diubah, tetapi bisa ditambah dan di hapus.

Kita bisa menambah anggota baru ke dalam set dengan fungsi add() dan fungsi update().

himpunan_abjad= {'a', 'b', 'c'}
print(himpunan_abjad)

# menambah satu-satu
himpunan_abjad.add('d')
himpunan_abjad.add('e')

# menambah satu anggota sekaligus
himpunan_abjad.update({'f', 'g'})
# atau bisa juga dengan list
himpunan_abjad.update(['h', 'i'])

print(himpunan_abjad)

Jika kita jalankan, kita akan mendapatkan output sebagai berikut:

lumakoo-set

Menghapus Anggota

Untuk menghapus anggota pada set, terdapat 4 fungsi yang dapat kita guanakan:

  • remove(nilai), Untuk menghapus nilai yang dicari, Jika nilai yang dicari tidak ada, maka akan error.
  • discard(nilai), untuk menghapus nilai yang dicari, juka nilai yang dicari tidak ada, tidak akan error.
  • pop(), mengambil dan menghapus nilai di sebelah kiri.
  • clear(), menghapus semua anggota

Mari kita coba satu persatu.


himpunan  = {'maya', 'budi', 100, ('a', 'b'), False, True}
print(himpunan)

# akan error jika nilai 100 tidak ada dalam set
himpunan.remove(100)
print(himpunan)

# tidak akan error jika 'a' dan 'b' tidak ada dalam set
himpunan.discard(('a', 'b'))
print(himpunan)

# remove nilai di sebelah kiri
nilaiYangDihapus = himpunan.pop()
print('nilai yang dihapus', nilaiYangDihapus)
print(himpunan)

# hapus semua nilai
himpunan.clear()
print(himpunan)

Jika dijalankan, berikut keseluruhan output yang dijalankan:

lumakoo-hapus-set

Fungsi Keanggotaan Pada Set

Diantara keunggulan tipe data set adalah, keunikan anggotanya. Sehingga dengan keunikan tersebut, python menyediakan kepada kita berbagai fungsi keanggotaan yang berguna untuk pengolahan data. Diantaranya:

  • fungsi union (gabungan)
  • fungsi interaksion (irisan)
  • fungsi difference (selisih)
  • fungsi symmetric difference (komplement)
  • dan lain sebagainya

Agar lebih jelasnya, mari kita coba beberapa diantaranya.

Anggap saja kita memiliki dua grup WA, yaitu grup WA SMA, dan grup WA SMP. Dan kita memiliki teman bernama Ratna dan Andi yang merupakan teman SMP dan juga teman SMA sekaligus.

untuk mempersentasikan hal tersebut, kita akan buat dua buah set seperti berikut:

grup_smp = {
  'andi', 'budi', 'ratna', 'sari'
}

grup_sma = {
  'putri', 'ratna', 'andi', 'agus'
}
Kita sekarang punya dua buah set, satu untuk grup SMP dan satu lagi untuk grup SMA.

Union (Gabungan)

Kita bisa melakukan operasi union, alias menggabungkan kedua angoota dari grup SMP dan SMA.

Ilustrasi operasi union:

lumakoo-union

Dalam python, kita bisa melakukan operasi union dengan simbol pipe (|) atau bisa memanggil fungsi set.union() seperti berikut:

# cara 1
print(grup_smp | grup_sma)

# cara 2
print(grup_smp.union(grup_sma)

Jika dijalankan kita akan mendapatkan output:

lumakoo-union

Perhatikan input diatas, meskipun ratna dan andi adalah anggota dari kedua grup tersebut, tapi nama mereka hanya muncul satu kali.

Intersection (Irisan)

Berikutnya adalah intersection atau irisan: yaitu kita akan mengambil siapa saja siswa yang menjadi anggota grup sma yang juga anggota grup smp.

Ilustrasi operasi intersection:

lumakoo-intersection

Kita bisa melakukannya dengan dua cara: yakni menggunakan simbol &, atau menggunakan fungsi set.intersection() seperti berikut:

print(grup_smp & grup_sma) #cara 1
print(grup_smp.intersection(grup_sma)) #cara 2

Jika dijalankan, kita akan mendapatkan output:

lumakoo-set-intersection


Difference (Selisih)

Difference atau selisih adalah proses mengekstrak anggota grup pertama, yang bukan anggota grup kedua.

Perhatikan anggota berikut:

lumakoo-set-difference

Untuk melakukannya, kita bisa menggunakan simbol - atau dengan memanggil fungsi set.difference() seperti ini:

#differnce
print('\n anggota grup smp yang bukan anggota grup sma')
print(grup_smp - grup_sma)
print(grup_smp.difference(grup_sma))

print('\n dibalik, anggota grup sma yang bukan anggota smp')
print(grup_sma - grup_smp)
print(grup_sma.difference(grup_smp))

Outputnya akan kita lihat setelah kita coba fungsi keanggotaan symmetric_difference.

Symmetric Difference (yang hanya menjadi anggota dalam satu grup)

Bedanya dengan difference, symmetric difference akan menghasilkan anggota-anggota dari kedua grup, yang mana tiap anggota tersebut hanya menjadi anggota dari satu grup.

lumakoo-set-symmetric-difference

Lalu tambahkan kode program berikut pada syntak difference:

#symmetric difference
print('\n anggota yang hanya ikut satu grup saja:')
print(grup_sma.symmetric_difference(grup_smp))

Jika kita jalankan, gabungan kode program dari fungsi difference dan juga symmetric_difference akan menghasilkan output sebagai berikut:

lumakoo-set-symmetric_difference

Menampilkan Anggota Set Dengan Perulangan

Berikutnya kita juga bisa menampilkan tiap anggota dari sebuah set denan melakukan perulangan for.

Perhatikan contoh berikut:

himpunan_buah = {
    'pepaya', 'apel, 'rambutan', 'jagung'
}

for buah in himpunan_buah:
    print (buah)

Output:

lumakoo-set-for

Fungsi-fungsi bawaan set

Terakhir tapi bukan yang paling akhir, berikut ini adalah kesimpulan fungsi-fungsi bawaan tipe data set yang bisa kita gunakan


Agar lebih memahami semua fungsi diatas, teman-teman bisa mencobanya satu persastu.

Oke deh, sekian dulu pembahasan tentang tipe data set.

Saya ucapkan terima kasih karna teman-temann sudah membaca sampai sejauh ini, dan buat yang belum membaca dari awal kamu bisa buka halaman-halaman sebelumnya agar bisa lebih mudah memahami dasar-dasar belajar pemrograman python.

Selanjutnya pada seri ke #10 kita akan mulai belajar tentang operator pada pemrograman python yang pastinya bakalan lebih seru. hehe...

Sekian, dan ingat! jangan lupa praktek!