Learn
← Previous Next →

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