Menguasai Set Python: Pembuatan, Manipulasi & Operasi
Set Python
Temukan bagaimana tipe data set Python menyederhanakan deduplikasi data dan operasi berbasis himpunan. Panduan ini mencakup pembuatan, modifikasi, penghapusan, dan semua operasi set penting.
A set is an unordered collection of unique, immutable items. While the set itself is mutable—allowing you to add or remove elements—its individual elements must be hashable (e.g., numbers, strings, tuples).
Python sets support mathematical set operations such as union, intersection, difference, and symmetric difference, making them ideal for tasks like data deduplication, membership testing, and set algebra.
Membuat Set Python
Gunakan kurung kurawal atau konstruktor bawaan set() untuk membuat set. Elemen dapat berupa tipe imutable apa pun, tetapi tipe mutable seperti list, dict, atau set lain tidak dapat disertakan.
# Example 1: Sets with different data types
# set of integers
my_set = {1, 2, 3}
print(my_set)
# set of mixed datatypes
my_set = {1.0, 'Hello', (1, 2, 3)}
print(my_set)
Output
{1, 2, 3} {1.0, (1, 2, 3), 'Hello'}
Perhatikan bagaimana nilai duplikat secara otomatis dihapus dan bagaimana tuple—karena bersifat imutable—diterima.
# Removing duplicates
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# Constructing a set from a list
my_set = set([1, 2, 3, 2])
print(my_set)
# Attempting to include a mutable item causes an error
# my_set = {1, 2, [3, 4]} # TypeError: unhashable type: 'list'
Output
{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'
Membuat set kosong memerlukan konstruktor set(); menggunakan {} menciptakan dictionary kosong alih-alih.
# Distinguish set and dictionary when creating empty structures
a = {}
print(type(a))
a = set()
print(type(a))
Output
<class 'dict'> <class 'set'>
Memodifikasi Set di Python
Set bersifat mutable, tetapi mereka tidak mendukung pengindeksan atau slicing karena sifatnya yang tidak berurutan.
Gunakan add() untuk menyisipkan satu elemen dan update() untuk menggabungkan iterable lain ke dalam set. Entri duplikat secara otomatis diabaikan.
# Example: Adding elements
my_set = {1, 3}
print(my_set)
# Attempting to index a set raises an error
# my_set[0] # TypeError: 'set' object does not support indexing
# Add a single element
my_set.add(2)
print(my_set)
# Add multiple elements from a list
my_set.update([2, 3, 4])
print(my_set)
# Combine a list and another set
my_set.update([4, 5], {1, 6, 8})
print(my_set)
Output
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Menghapus Elemen dari Set
Gunakan discard() untuk menghapus elemen jika ada, atau tidak melakukan apa pun jika tidak. Sebaliknya, remove() menghasilkan KeyError saat elemen tidak ada.
# Example: Discard vs. remove
my_set = {1, 3, 4, 5, 6}
print(my_set)
my_set.discard(4)
print(my_set)
my_set.remove(6)
print(my_set)
my_set.discard(2)
print(my_set)
# The following will raise KeyError
# my_set.remove(2)
Output
{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2
Metode pop() menghapus dan mengembalikan elemen sembarang, sementara clear() mengosongkan set sepenuhnya.
# Pop and clear example
my_set = set("HelloWorld")
print(my_set)
print(my_set.pop())
print(my_set)
my_set.clear()
print(my_set)
Output
{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()
Operasi Set Python
Set Python mendukung aljabar himpunan klasik: union, intersection, difference, dan symmetric difference. Ini dapat dipanggil melalui operator atau metode khusus.
Mari kita gunakan dua set contoh:
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
Union
Union dari A dan B menggabungkan semua elemen yang berbeda.
print(A | B)
Output
{1, 2, 3, 4, 5, 6, 7, 8}
Intersection
Intersection hanya mengembalikan elemen yang sama di kedua set.
print(A & B)
Output
{4, 5}
Difference
Difference A - B mencantumkan elemen yang ada di A tetapi tidak di B.
print(A - B)
Output
{1, 2, 3}
Symmetric Difference
Symmetric difference A ^ B mengembalikan elemen yang ada di salah satu set tetapi tidak di keduanya.
print(A ^ B)
Output
{1, 2, 3, 6, 7, 8}
Metode Set Tambahan
Berikut adalah referensi cepat untuk semua metode bawaan yang tersedia pada objek set:
| Metode | Deskripsi |
|---|
| add() | Menambahkan elemen ke set |
| clear() | Menghapus semua elemen |
| copy() | Mengembalikan saluran dangkal |
| difference() | Mengembalikan set baru dari elemen yang ada dalam pemanggil tetapi tidak dalam yang lain |
| difference_update() | Penghapusan difference secara langsung |
| discard() | Hapus elemen jika ada; tidak ada error jika tidak ada |
| intersection() | Mengembalikan set baru dari elemen yang sama |
| intersection_update() | Pembaruan intersection secara langsung |
| isdisjoint() | True jika set tidak memiliki elemen yang sama |
| issubset() | True jika pemanggil adalah subset dari set lain |
| issuperset() | True jika pemanggil berisi set lain sepenuhnya |
| pop() | Menghapus dan mengembalikan elemen sembarang; KeyError jika kosong |
| remove() | Hapus elemen; KeyError jika tidak ada |
| symmetric_difference() | Mengembalikan set baru dari elemen yang eksklusif untuk setiap set |
| symmetric_difference_update() | Pembaruan symmetric difference secara langsung |
| union() | Mengembalikan set baru yang berisi semua elemen unik |
| update() | Union secara langsung dengan iterable lain |
Pengujian Keanggotaan Set
Periksa keberadaan elemen menggunakan kata kunci in.
my_set = set("apple")
print('a' in my_set) # True
print('p' not in my_set) # False
Output
True False
Melakukan Iterasi Melalui Set
Loop melalui set dengan loop for standar; urutan tidak dijamin.
for letter in set("apple"):
print(letter)
Fungsi Bawaan dengan Set
Fungsi seperti len(), max(), min(), sum(), all(), any(), dan sorted() bekerja secara mulus dengan set. Berikut adalah tabel utilitas umum:
| Fungsi | Deskripsi |
|---|
| all() | True jika semua elemen truthy (atau set kosong) |
| any() | True jika setidaknya satu elemen truthy |
| enumerate() | Melakukan iterasi dengan indeks, berguna untuk debugging |
| len() | Jumlah elemen |
| max() | Elemen terbesar |
| min() | Elemen terkecil |
| sorted() | Mengembalikan list terurut dari set |
| sum() | Jumlah semua elemen numerik |
Frozenset Python
Sebuah frozenset adalah versi imutable dari set. Setelah dibuat, elemennya tidak dapat berubah, menjadikannya hashable dan dapat digunakan sebagai kunci kamus.
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
Operasi yang didukung mencerminkan set reguler, kecuali metode yang memutasi.
print(A.isdisjoint(B))
print(A.difference(B))
print(A | B) # Attempting to add an element raises an AttributeError
# A.add(3) # AttributeError: 'frozenset' object has no attribute 'add'