Belajar Python : Struktur Data Set Python

Sebelumnya kita sudah belajar tentang struktur data tuple pada python, Sekarang kita akan belajar tentang Set.

Apa sih itu set?…

Set merupakan salah satu tipe data yang tidak berurut(unordered). Set memiliki unique value(tidak ada duplikasi). Misalkan di dalam set memiliki dua data yang sama maka otomatis akan dihilangkan salah satunya.

Yuk kita lihat…

Kali ini kita akan membahas:

  1. Membuat Set
  2. Menambah Anggota Set
  3. Menghapus Anggota Set
  4. Operasi Pada Set
  5. Fungsi Pada Set

Membuat Set

Set biasanya dibuat dengan memasukkan semua anggotanya ke dalam tanda kurung kurawal {} dan setiap anggotanya dipisahkan dengan tanda koma,. Harus menggunakan tanda kurung kurawal {} ya???

Enggak kok…

Set juga bisa dibuat dengan memasukkan list ke dalam fungsi set(). Set dapat berisi data campuran seperti boolean, string, integer dan sebagainya, tetapi set tidak dapat berisi dictionary, set, dan list.

Contoh:

# Membuat set dengan kurung kurawal
nomor = {1,2,3}
print nomor

# Membuat set dengan fungsi set()
angka = set([1,2.0,"tiga"])
print angka

# Anggota set yang memiliki nilai sama akan dihilangkan
bilangan = {1,2,2,3,3,3}
print bilangan

Outputnya adalah:

set([1,2,3])
set([1,2.0,'tiga'])
set([1,2,3])

Apabila kita mengisi anggota set dengan list seperti berikut:

nomor = {1,2,[3,4,5]}

Maka akan memberikan pesan TypeError: unhashable type: 'list' hal ini karena set tidak dapat berisikan list.

Bagaimana cara kita membuat set kosong???

Jika ingin membuat set kosong kita tidak dapat menggunakan kurung kurawal {}. Lah kenapa???

Karena jika kita menggunakan kurung kurawal maka akan dianggap sebagai tipe data dictionary oleh python.

Jadi gimana dong???

Kita dapat membuat set kosong menggunakan fungsi set().

Yuk kita lihat…

# Membuat variabel nomor dengan {}
nomor = {} # <- dianggap sebagai dictionary
print type(nomor) # <- outputnya <type 'dict'>

# Membuat set kosong dengan set()
nomor = set() # <- dianggap set
print type(nomor) # <- outputnya <type 'set'>

Menambah Anggota Set

Set bersifat mutable, tetapi karena set merupakan tipe data yang tidak berurut maka untuk mengaksesnya tidak bisa menggunakan indeks dan tidak mendukung slicing (pemotongan) seperti pada list dan tuple.

Lah terus gimana dong caranya menambah anggota set kalau tidak bisa menggunakan indeks???

Nah.. Untuk menambahkan satu anggota set python menyediakan fungsi add() pada set, dan untuk menambahkan beberapa anggota set sekaligus bisa menggunakan fungsi update(), dengan menggunakan fungsi update().

Yuk kita lihat contohnya…

Contoh:

nomor = {1,2,3,4}

# Menambahkan angka 5 menggunakan add()
nomor.add(5)
print nomor

# Menambahkan anggota set dengan update()
nomor.update([1,3,5,7,9])
print nomor

Output dari program di atas adalah:

set([1, 2, 3, 4, 5])
set([1, 2, 3, 4, 5, 7, 9])

Menghapus Anggota Set

Sekali lagi mengingatkan ya hehe.. Kalau Set tidak memiliki indeks, jadi untuk menghapus anggota set python juga menyediakan fungsi bawaan yaitu discard() dan remove().

Bedanya apa dong???

Nah perbedaaan dari kedua fungsi tersebut (discart() dan remove) ada pada output atau response yang diberikan, fungsi remove() akan memunculkan error apabila anggota yang ingin dihapus tidak ada di dalam set, sedangkan discard() tidak akan memunculkan error apabila anggota yang ingin dihapus tidak ada di dalam set.

Yuk kita lihat contohnya:

nomor = {1,2,3,4,5,6}

# Menghapus anggota set dengan discard()
# Data ada di dalam set
nomor.discard(3)
print nomor
# Data tidak ada di dalam set
nomor.discard(7)
print nomor

# Menghapus anggota set dengan remove()
# Data ada di dalam set
nomor.remove(4)
print nomor
# Data tidak ada di dalam set
nomor.remove(8)
print nomor

Outputnya seperti berikut:

set([1,2,4,5,6]) #<- fungsi discard() data ada
set([1,2,3,4,5]) #<- fungsi discard() data tidak ada
set([1,2,5,6]) #<- fungsi remove() data ada
KeyError: 8 #<- error fungsi remove() karena tidak ada data

Bila kita mencoba menghapus anggota yang ada di dalam set menggunakan fungsi remove() maka akan menampilkan pesan error KeyError.

Kita juga bisa menghapus anggota set dengan fungsi pop(). Fungsi pop() akan menghapus salah satu anggota set dari depan, dan untuk mengosongkan isi set kita dapat menggunakan fungsi clear() maka seluruh anggota set akan di hapus.

nomor = {1,2,3,4}

# Menghapus anggota set dengan pop()
nomor.pop()
print nomor

# Menghapus semua anggota set
nomor.clear()
print nomor

Outputnya seperti berikut:

set([2, 3, 4])
set([])

Operasi Pada Set

Set biasanya digunakan dalam operasi himpunan seperti gabungan, selisih, komplemen dan irisan.

1. Operasi Gabungan (Union)

Operasi Gabungan (union) merupakan gabungan dari anggota set atau himpunan A dengan anggota set atau himpunan B. Gabungan dapat dibuat menggunakan operator palang (|) atau menggunakan fungsi union().

A = {1, 3, 5, 7}
B = {2, 4, 6, 8}

# Gabugan menggunakan |
print A | B

# Gabungan menggunakan union()
print A.union(B) #<- sama dengan B.union(A)

Outputnya adalah:

set([1, 2, 3, 4, 5, 6, 7, 8])
set([1, 2, 3, 4, 5, 6, 7, 8])
2. Operasi Irisan (Intersection)

Operasi Irisan (Intersection) dari A dan B merupakan anggota set yang ada di dalam A dan juga ada di dalam B.

Irisan dapat dilakukan menggunakan operator jangkar dan (&) atau juga bisa menggunakan fungsi intersection().

A = {1, 2, 3, 4}
B = {3, 4, 5 ,6}

# Irisan menggunakan &
print A & B

# Irisan menggunakan intersection()
print A.intersection(B)

Outputnya seperti berikut ya:

set([3,4])
set([3,4])
3. Operasi Selisih (Difference)

Selisih (difference) dari A dan B adalah anggota set yang hanya ada di dalam A dan tidak ada di dalam B.

Selisih dapat dilakukan menggunakan operator kurang (-) atau menggunakan fungsi difference().

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# Selisih menggunakan -
print A - B
print B - A

# selisih menggunakan difference()
print A.difference(B)
print B.difference(A)

Outputnya seperti dibawah:

set([1, 2, 3]) #<- A selisih B
set([8, 6, 7]) #<- B selisih A

set([1, 2, 3]) #<- A selisih B
set([8, 6, 7]) #<- B selisih A

Perlu diingat bahwa A selisih B tidak sama dengan B selisih A.

4. Operasi Komplemen (Symmetric Difference)

Operasi komplemen (symmetric difference) dari A dan B adalah anggota set yang ada di dalam A dan B tetapi tidak ada di dalam keduanya.

Komplemen dapat dibuat menggunakan operator ^ atau menggunakan fungsi symmetric_difference().

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# Komplemen menggunakan ^
print A ^ B

# Komplemen menggunakan symmetric_difference()
print A.symmetric_difference(B)

Outputnya adalah:

set([1, 2, 3, 6, 7, 8])

Fungsi Pada Set

Python menyediakan beberapa fungsi yang dapat kita gunakan pada set, berikut fungsi-fungsinya:

FungsiDeskripsi
add()Menambahkan satu anggota ke dalam set
clear()Menghapus semua anggota set
copy()Menggembalikan shallow copy dari set
difference()Mengembalikan set baru berisi selisih dua atau lebih set
difference_update()Mengupdate set dengan selisih set bersangkitan dan set lainnya
discard()Menghapus satu anggota di dalam set
intersection()Mengembalikan set baru berisi irisian dari dua atau lebih set
intersection_update()Mengupdate set dengan irisan set bersangkutan dan set lainnya
isdisjoint()Mengembalikan True jika dua set tidak memiliki irisan
issubset()Mengembalikan True jika set lain berisi set yang bersangkutan
issuperset()Mengembalikan True jika set yang bersangkutan berisi set lain
pop()Menghapus anggota acak dati sebuah set
remove()Menghapus satu anggota set
symmetric_difference()Mengembalikan set baru berisi komplemen dari dua atau lebih set
symmetric_difference_update()Mengupdate set dengan komplemen dari set yang bersangkutan dan set lainnya
union()Mengembalikan set baru berisi gabungan dari dua atau lebih set
update()Mengupdate set dengan gabungan set yang bersangkutan dan set lainnya

Langkah Selanjutnya

Kita sudah selesai belajar tentang set. Set merupakan tipe data yang tidak berurutan dan memiliki unique value. Silakan dipelajari lagi ya jika masih kurang paham silakan tanyakan di kolom komentar…

Selanjutnya kita akan belajar mengenai tipe data dictionary pada python.