Sets

myset = {"apple", "banana", "cherry"}

Set

  • Set digunakan untuk menyimpan beberapa item dalam satu variabel.

  • Set adalah salah satu dari 4 tipe data bawaan Python yang digunakan untuk menyimpan koleksi data. Tiga lainnya adalah List, Tuple, dan Dictionary, yang semuanya memiliki kualitas dan penggunaan yang berbeda.

  • Set adalah koleksi yang tidak berurutan, tidak dapat diubah*, dan tidak terindeks.

    Catatan

    Item dalam set tidak dapat diubah, tetapi Anda dapat menghapus item dan menambahkan item baru.

  • Set ditulis dengan tanda kurung kurawal.

  • Set Items

    Item yang ditetapkan tidak berurutan, tidak dapat diubah, dan tidak memperbolehkan nilai duplikat.

  • Unordered
    • Tidak berurutan berarti item dalam suatu set tidak memiliki urutan yang pasti.

    • Item dalam set dapat muncul dalam urutan yang berbeda setiap kali Anda menggunakannya, dan tidak dapat dirujuk berdasarkan indeks atau kunci.

  • Tidak Dapat Diubah

    Item dalam set tidak dapat diubah, artinya kita tidak dapat mengubah item setelah set dibuat.

    Catatan

    Setelah satu set dibuat, Anda tidak dapat mengubah itemnya, tetapi Anda dapat menghapus item dan menambahkan item baru.

  • Duplicates Not Allowed

    Set tidak dapat memiliki dua item dengan nilai yang sama.

    Catatan

    Nilai True dan 1 dianggap sebagai nilai yang sama dalam set, dan diperlakukan sebagai duplikat

    Nilai False dan 0 dianggap sebagai nilai yang sama dalam set, dan diperlakukan sebagai duplikat

  • Get the Length of a Set

    Untuk menentukan berapa banyak item yang dimiliki suatu set, gunakan fungsi len()

    thisset = {"apple", "banana", "cherry"}
    print(len(thisset)) #return 3
    
  • Set Items - Data Types
    • Item yang ditetapkan dapat berupa tipe data apa pun:

      set1 = {"apple", "banana", "cherry"}
      set2 = {1, 5, 7, 9, 3}
      set3 = {True, False, False}
      
    • Satu set dapat berisi tipe data yang berbeda:

      set1 = {"abc", 34, True, 40, "male"}
      
  • type()

    Dari perspektif Python, himpunan didefinisikan sebagai objek dengan tipe data 'set': <class 'set'>

  • The set() Constructor

    thisset = set(("apple", "banana", "cherry")) # note the double round-brackets
    print(thisset) #return {'banana', 'cherry', 'apple'}
    

Access Set Items

Anda tidak dapat mengakses item dalam suatu set dengan merujuk ke indeks atau kunci.

Namun, Anda dapat melakukan perulangan melalui item-item dalam set menggunakan for loop, atau menanyakan apakah suatu nilai tertentu ada dalam suatu set, dengan menggunakan kata kunci in.

thisset = {"apple", "banana", "cherry"}

for x in thisset:
  print(x)
thisset = {"apple", "banana", "cherry"}
print("banana" in thisset) #return True

Add Set Items

Catatan

Setelah satu set dibuat, Anda tidak dapat mengubah itemnya, tetapi Anda dapat menambahkan item baru.

Untuk menambahkan satu item ke satu set gunakan metode add()

thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
print(thisset) #return {'apple', 'cherry', 'banana', 'orange'}

Add Sets

Untuk menambahkan item dari set lain ke set saat ini, gunakan metode update()

thisset = {"apple", "banana", "cherry"}
tropical = {"pineapple", "mango", "papaya"}

thisset.update(tropical)

print(thisset) #return {'apple', 'mango', 'cherry', 'pineapple', 'banana', 'papaya'}

Add Any Iterable

Objek dalam metode update() tidak harus berupa suatu set, objek tersebut dapat berupa objek apa pun yang dapat diulang (tupel, lista, dictionaries, dan sebagainya).

thisset = {"apple", "banana", "cherry"}
mylist = ["kiwi", "orange"]

thisset.update(mylist)

print(thisset) #return {'banana', 'cherry', 'apple', 'orange', 'kiwi'}

Remove Item

Untuk menghapus item dalam satu set, gunakan metode remove() atau dispose().

thisset = {"apple", "banana", "cherry"}
thisset.remove("banana")
print(thisset) #return {'apple', 'cherry'}
# Jika item yang akan dihapus tidak ada, ``remove()`` akan menimbulkan kesalahan.

thisset.discard("banana")
print(thisset) #return {'apple', 'cherry'}
# Jika item yang akan dihapus tidak ada, ``discard()`` TIDAK akan menimbulkan kesalahan.

Anda juga dapat menggunakan metode pop() untuk menghapus item, tetapi metode ini akan menghapus item secara acak, sehingga Anda tidak dapat memastikan item mana yang dihapus.

Nilai kembalian metode pop() adalah item yang dihapus.

thisset = {"apple", "banana", "cherry"}
x = thisset.pop()
print(x)       #return apple
print(thisset) #return {'cherry', 'banana'}

Peringatan

Set tidak berurutan, jadi ketika menggunakan metode pop(), Anda tidak tahu item mana yang akan dihapus

Metode clear() mengosongkan set:

thisset = {"apple", "banana", "cherry"}
thisset.clear()
print(thisset) #return set()

Kata kunci del akan menghapus set sepenuhnya:

thisset = {"apple", "banana", "cherry"}
del thisset
print(thisset) #this will raise an error because the set no longer exists

Loop Sets

Anda dapat melakukan pengulangan melalui item-item yang ditetapkan dengan menggunakan perulangan for:

thisset = {"apple", "banana", "cherry"}

for x in thisset:
  print(x)

Join Sets

Ada beberapa cara untuk menggabungkan dua atau lebih set di Python.

  • Metode union() dan update() menggabungkan semua item dari kedua set.

  • Metode intersection() HANYA menyimpan duplikat.

  • Metode difference() menyimpan item dari set pertama yang tidak ada di set lainnya.

  • Metode symmetric_difference() menyimpan semua item KECUALI duplikat.

Union

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3) #return {'a', 'b', 'c', 1, 2, 3}

# Use ``|`` to join two sets, will get the same result

set3 = set1 | set2
print(set3) #return {'a', 'b', 'c', 1, 2, 3}

Join Multiple Sets

Semua metode dan operator penggabungan dapat digunakan untuk menggabungkan beberapa set.

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}
set3 = {"John", "Elena"}
set4 = {"apple", "bananas", "cherry"}

myset = set1.union(set2, set3, set4)
print(myset)
#return {1, cherry, 2, banana, 'c', apple, 'a', 'b', Elena, 3, John}
#urutan set bersifat random

# OR

myset = set1 | set2 | set3 |set4
print(myset)
#return {'b', 3, apple, 1, banana, 'c', cherry, Elena, John, 'a', 2}
#urutan set bersifat random

Join a Set and a Tuple

Metode union() memungkinkan Anda menggabungkan suatu set dengan tipe data lain, seperti list atau tuple. Hasilnya akan berupa sebuah set.

x = {"a", "b", "c"}
y = (1, 2, 3)

z = x.union(y)
print(z) #return {'b', 'c', 3, 1, 'a', 2}

Catatan

Operator | hanya memungkinkan Anda untuk menggabungkan set dengan set, dan tidak dengan tipe data lain seperti yang dapat Anda lakukan dengan metode union().

Update

  • Metode update() menyisipkan semua item dari satu set ke set lainnya.

  • update() mengubah set asli, dan tidak mengembalikan set baru.

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1) #return {1, 'b', 2, 3, 'a', 'c'}

Catatan

Baik union() maupun update() akan mengecualikan item duplikat apa pun.

Intersection

Simpan HANYA duplikatnya

Metode interseksi() akan mengembalikan set baru yang hanya berisi item yang ada di kedua set.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.intersection(set2)
print(set3) #return {'apple'}

# You can use the & operator instead of the intersection() method

set3 = set1 & set2
print(set3) #return {'apple'}

Catatan

Operator & hanya memungkinkan Anda untuk menggabungkan set dengan set, dan tidak dengan tipe data lain seperti yang dapat Anda lakukan dengan metode intersection().

Metode intersection_update() juga akan HANYA menyimpan duplikat, tetapi akan mengubah set asli alih-alih mengembalikan set.method baru.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set1.intersection_update(set2)

print(set1) #return {'apple'}

Nilai True dan 1 dianggap sebagai nilai yang sama. Hal yang sama berlaku untuk False dan 0.

set1 = {"apple", 1,  "banana", 0, "cherry"}
set2 = {False, "google", 1, "apple", 2, True}

set3 = set1.intersection(set2)

print(set3) #return {False, True, 'apple'}

Difference

Metode difference() akan mengembalikan set baru yang hanya berisi item dari set pertama yang tidak ada di set lainnya.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.difference(set2)

print(set3) #return {'banana', 'cherry'}

# the `-` operator instead of the `difference()` method, will get the same result.

set3 = set1 - set2
print(set3) #return {'banana', 'cherry'}

Catatan

Operator - hanya memungkinkan Anda untuk menggabungkan set dengan set, dan tidak dengan tipe data lain seperti yang dapat Anda lakukan dengan metode difference() yang ada di set lainnya.

Metode difference_update() juga akan menyimpan item dari set pertama yang tidak ada di set lainnya, tetapi akan mengubah set asli alih-alih mengembalikan set baru.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set1.difference_update(set2)

print(set1)

Symmetric Differences

Metode symmetric_difference() hanya akan menyimpan elemen yang TIDAK ada di kedua set.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.symmetric_difference(set2)
print(set3)
#return {'google', 'banana', 'microsoft', 'cherry'}

#bisa menggunakan operator ^ sebagai pengganti symmetric_difference()

set3 = set1 ^ set2
print(set3)
#return {'google', 'banana', 'microsoft', 'cherry'}

Catatan

Operator ^ hanya memungkinkan Anda untuk menggabungkan set dengan set, dan tidak dengan tipe data lain seperti yang dapat Anda lakukan dengan metode symmetric_difference().

Metode symmetric_difference_update() juga akan menyimpan semuanya kecuali duplikat, tetapi akan mengubah set asli alih-alih mengembalikan set baru.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set1.symmetric_difference_update(set2)

print(set1) #return {'google', 'banana', 'microsoft', 'cherry'}

frozenset

  • frozenset adalah versi set yang tidak dapat diubah.

  • Seperti set, frozenset berisi elemen-elemen yang unik, tidak berurutan, dan tidak dapat diubah.

  • Tidak seperti set, elemen tidak dapat ditambahkan atau dihapus dari frozenset.

Creating a frozenset

Gunakan konstruktor frozenset() untuk membuat frozenset dari iterable mana pun.

x = frozenset({"apple", "banana", "cherry"})
print(x) #return frozenset({'banana', 'apple', 'cherry'})
print(type(x)) #return <class 'frozenset'>

Frozenset Methods

Karena tidak dapat diubah, Anda tidak dapat menambahkan atau menghapus elemen. Namun, frozenset mendukung semua operasi set yang tidak mengalami mutasi.

Method

Shortcut

Description

copy()

Returns a shallow copy

difference()

-

Returns a new frozenset with the difference

intersection()

&

Returns a new frozenset with the intersection

isdisjoint()

Returns whether two frozensets have an intersection

issubset()

<= / <

Returns True if this frozenset is a (proper) subset of another

issuperset()

>= / >

Returns True if this frozenset is a (proper) superset of another

symmetric_difference()

^

Returns a new frozenset with the symmetric differences

union()

|

Returns a new frozenset containing the union

Set Methods

Python memiliki seperangkat metode bawaan yang dapat Anda gunakan pada set.

Method

Shortcut

Description

add()

Adds an element to the set

clear()

Removes all the elements from the set

copy()

Returns a copy of the set

difference()

-

Returns a set containing the difference between two or more sets

difference_update()

-=

Removes the items in this set that are also included in another, specified set

discard()

Remove the specified item

intersection()

&

Returns a set, that is the intersection of two other sets

intersection_update()

&=

Removes the items in this set that are not present in other, specified set(s)

isdisjoint()

Returns whether two sets have a intersection or not

issubset()

<= <

Returns True if all items of this set is present in another set Returns True if all items of this set is present in another, larger set

issuperset()

>= >

Returns True if all items of another set is present in this set Returns True if all items of another, smaller set is present in this set

pop()

Removes an element from the set

remove()

Removes the specified element

symmetric_difference()

^

Returns a set with the symmetric differences of two sets

symmetric_difference_update()

^=

Inserts the symmetric differences from this set and another

union()

|

Return a set containing the union of sets

update()

|=

Update the set with the union of this set and others