Hari 11: Set — Koleksi Unik & Operasi Himpunan
50 min
Last updated 26 Mar 2026
Apa itu Set?
Set adalah koleksi yang tidak berurutan dan tidak memiliki duplikat. Sangat cepat untuk operasi keanggotaan.
angka = {1, 2, 3, 4, 5}
buah = {"apel", "mangga", "jeruk", "apel"} # duplikat dihapus otomatis
print(buah) # {'apel', 'mangga', 'jeruk'} — urutan tidak terjamin
kosong = set() # BUKAN {} — itu dict kosong!
dari_list = set([1, 2, 2, 3, 3, 3])
print(dari_list) # {1, 2, 3}
Operasi Dasar Set
s = {1, 2, 3, 4, 5}
s.add(6) # tambah satu elemen
s.update([7, 8]) # tambah banyak elemen
s.remove(3) # hapus (error jika tidak ada)
s.discard(99) # hapus aman (tidak error)
x = s.pop() # hapus & ambil elemen acak
s.clear() # kosongkan
print(3 in {1, 2, 3, 4}) # True — O(1), sangat cepat!
Operasi Himpunan (Set Theory)
A = {1, 2, 3, 4, 5}
B = {3, 4, 5, 6, 7}
# Union — semua elemen A atau B
print(A | B) # {1,2,3,4,5,6,7}
print(A.union(B))
# Intersection — elemen yang ada di A DAN B
print(A & B) # {3,4,5}
print(A.intersection(B))
# Difference — ada di A tapi tidak di B
print(A - B) # {1,2}
print(A.difference(B))
# Symmetric Difference — ada di A atau B, tapi tidak keduanya
print(A ^ B) # {1,2,6,7}
# Subset & Superset
C = {3, 4}
print(C.issubset(A)) # True — C ⊆ A
print(A.issuperset(C)) # True — A ⊇ C
print(A.isdisjoint({8, 9})) # True — tidak ada irisan
Use Case Nyata Set
# 1. Hapus duplikat dari list
nama_hadir = ["Ana","Budi","Ana","Citra","Budi","Doni"]
unik = list(set(nama_hadir))
print(f"Hadir: {sorted(unik)}") # urutan tidak terjamin, pakai sorted
# 2. Cari elemen yang berbeda antara dua list
minggu_lalu = {"Ana", "Budi", "Citra", "Doni"}
minggu_ini = {"Budi", "Citra", "Eva", "Fani"}
absen_minggu_ini = minggu_lalu - minggu_ini
baru_minggu_ini = minggu_ini - minggu_lalu
hadir_keduanya = minggu_lalu & minggu_ini
print(f"Absen : {absen_minggu_ini}")
print(f"Baru : {baru_minggu_ini}")
print(f"Konsisten: {hadir_keduanya}")Assignment
Diberikan dua daftar tamu undangan pesta A dan B. Temukan: tamu yang hadir di kedua pesta, tamu eksklusif pesta A, tamu eksklusif pesta B, dan total tamu unik keseluruhan.
Expected output:
Hadir di kedua pesta : ['Budi', 'Citra', 'Eva']
Eksklusif Pesta A : ['Ana', 'Doni', 'Fani']
Eksklusif Pesta B : ['Gani', 'Hana', 'Ivan']
Total tamu unik : 9 orang
Daftar lengkap : ['Ana', 'Budi', 'Citra', 'Doni', 'Eva', 'Fani', 'Gani', 'Hana', 'Ivan']
PY
main.py
Solution
Output