Wednesday, 18 March 2015

3.9.Sets

Sets merupakan list yang tidak teratur, seperti list, dan sets dapat diisi oleh datatype yang tidak bisa diubah tapi tidak boleh ada dua (2) data yang sama. Set dicirikan dengan tanda '{}' seperti dictionaries. Jadi dengan kata lain sets itu list dan tandanya seperti dictionaries.

  • >>> cobaSet={'hello',1,2,3,4,5}
  • >>> cobaSet
  • {1, 2, 3, 4, 5, 'hello'}
  • >>>  type(cobaSet)
  • <class 'set'>
  • >>> 

Implemen sets seharusnya sebagai classes, tapi tidak usah khawatir tentang itu, ada waktunya untuk itu (bila ada waktu dan umur ya).  Dengan sets kita tidak perlu khawatir juga bila kita tidak punya datanya, (lalu untuk apa buat set yang tidak ada isinya? saya juga tidak tahu)

  • >>> set2=set()
  • >>> set2
  • set()
  • >>> type(set2)
  • <class 'set'>
  • >>> len(set2)
  • 0
  • >>> 

Set dapat dimodifikasi dengan metode 'add()' dan 'update()'.

  • >>> set3={1,2,3,4,5,6}   # membuat set dengan nama set3
  • >>> type(set3)                # memastikan set3 adalah set
  • <class 'set'>                    
  • >>> len(set3)                 # banyaknya set3
  • 6                                      # set3 ada 6 data
  • >>> set3.add(7)            # menambahkan data dengan nilai 7
  • >>> set3                        # cek isi set3
  • {1, 2, 3, 4, 5, 6, 7}
  • >>> len(set3)                # cek banyanya set3
  • 7                                      # set3 ada 7 data
  • >>> set3.add(1)            # mencoba memasukan data 1 ke set3
  • >>> set3                        # cek set3
  • {1, 2, 3, 4, 5, 6, 7}         # set tidak mengizinkan ada dua data yang sama
  • >>> len(set3)              # cek banyaknya data lagi
  • 7                                     # masih ada 7 data.
  • >>> 

Contoh diatas adalah penggunaan metode add() yang menambahakan satu (1) nilai saja. Metode add() hanya menambahkan satu data setiap kalinya. Untuk menambahkan data yang lebih dari satu dengan satu (1) perintah kita gunakan 'update()'.
>>> set4={1,2,3}    # membuat set dengan nama set4
>>> len(set4)         # banyaknya set4
3
>>> set4                  # tampilkan set4
{1, 2, 3}
>>> set4.update({9,8,7})     # update set4 dengan data 9,8 dan 7
>>> len(set4)                       # banyaknya set4 sekarang
6
>>> set4                      # tampilkan set4
{1, 2, 3, 7, 8, 9}
>>> set4.update({3,4})   # update set4 dengan nilai 3 dan 4
>>> len(set4)                # banyaknya set4 sekarang
7
>>> set4                        # tampilkan set4
{1, 2, 3, 4, 7, 8, 9}
>>> set4.update({'a','b'},{'f','r'})   # update set4 dengan tuple
>>> set4                                          # tampilkan set4
{1, 2, 3, 4, 'b', 7, 8, 9, 'f', 'a', 'r'}
>>> set4.update(['sungai','matahari'])  # update set4 dengan list
>>> set4                                                    # tampilkan set4
{1, 2, 3, 4, 'b', 7, 8, 9, 'sungai', 'matahari', 'f', 'a', 'r'}
>>> 
Untuk menghapus data kita gunakan discard() untuk menghapus satu data, dan remove() untuk menghapus satu data juga (hehehe...), Lalu apa bedanya?
  • >>> set4
  • {1, 2, 3, 4, 'b', 7, 8, 9, 'sungai', 'matahari', 'f', 'a', 'r'}
  • >>> set4.discard(8)
  • >>> set4
  • {1, 2, 3, 4, 'b', 7, 9, 'sungai', 'matahari', 'f', 'a', 'r'}
  • >>> set4.discard('sungai')
  • >>> set4
  • {1, 2, 3, 4, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.discard(100)       # mencoba menghapus data yang tidak ada
  • >>> set4                             # tidak terjadi apa-apa
  • {1, 2, 3, 4, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.remove(4)          
  • >>> set4
  • {1, 2, 3, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.remove('bulan')    # mencoba menghapus data yang tidak ada
  • Traceback (most recent call last):        # TADAAA...!!
  •   File "<pyshell#41>", line 1, in <module>
  •     set4.remove('bulan')
  • KeyError: 'bulan'
  • >>> 

Metode remove() menghasilkan error bila tidak ada datanya.
Ada pula metode pop(), untuk menghapus juga.
  • >>> set4
  • {1, 2, 3, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.pop()
  • 1
  • >>> set4
  • {2, 3, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.pop()
  • 2
  • >>> set4
  • {3, 'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> set4.pop()
  • 3
  • >>> set4
  • {'b', 7, 9, 'matahari', 'f', 'a', 'r'}
  • >>> 

Dan ada 'clear()' untuk menghapus semua data, yang hasilnya sama dengan set1=set(). 
  • >>> set4.clear()
  • >>> set4
  • set()
  • >>> set4.pop()
  • Traceback (most recent call last):
  •   File "<pyshell#51>", line 1, in <module>
  •     set4.pop()
  • KeyError: 'pop from an empty set'
  • >>> 

Untuk metode pop() juga menghasilkan error bila tidak ada yang bisa dihapus.

Untuk mencari data pada set, kita gunakan perintah 'in', dan kita juga bisa menggunakan perintah 'union', 'intersection', 'difference' dan 'symmetric_difference'.
  • >>> set5=(1,2,3,4,5,6,10,20,30,100,200)
  • >>> 10 in set5
  • True
  • >>> 11 in set5
  • False
  • >>> set6={10,20,30,40,50}
  • >>> set5.union(set6)
  • {1, 2, 3, 100, 5, 6, 4, 200, 40, 10, 50, 20, 30}
  • >>> set5.intersection(set6)
  • {10, 20, 30}
  • >>> set5.difference(set6)
  • {1, 2, 3, 100, 5, 6, 4, 200}
  • >>>set6.difference(set5)
  • {40, 50}
  • >>>set5.symmetric_difference(set6)
  • {1, 2, 3, 100, 5, 6, 4, 40, 200, 50}
  • >>> 

Penggunaan kata 'set' dibawah ini tidak sama dengan apa yang kita bahas diatas.

Union adalah penggabungan dua set elemen, biasanya dalam matematika menggunakan tanda '∪', hm... mirip 'U' tapi bukan 'U'. 

Gambar diatas adalah sebuah contoh 'A ∪ B' dan 'A ∪ B ∪ C'.

Dan intersection adalah 1 set element yang sama dari 2 set element. Intersection biasanya menggunakan tanda mirip 'n' yaitu '∩'. Dan contoh dibawah ini adalah 'A ∩ B' dan 'A ∩ B ∩ C', dimana yang diberi tanda merah adalah 1 set element yang dimiliki oleh dua set atau lebih yang memiliki element yang sama.
 

Different adalah semua yang berbeda dari set element yang lain. Different diberi tanda '\' atau 'c'. Jadi seperti ini A \ B = A ∩ Bc  (Hehehe.. ribet ya). Kita pake gambar biar jelas, semua yang diwarnai merah adalah hasilnya.

Dan symmetric_difference adalah yang bukan intersection.

No comments:

Post a Comment