🐍 Python set μžλ£Œν˜• 정리

Heejun KimΒ·2024λ…„ 10μ›” 5일

python

λͺ©λ‘ 보기
1/2

1. setμ΄λž€?

set은 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•Šκ³  μˆœμ„œκ°€ μ—†λŠ” 데이터 κ΅¬μ‘°ν˜•μ΄λ‹€.
λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œκ³ΌλŠ” λ‹€λ₯΄κ²Œ 인덱슀둜 μ ‘κ·Όν•  수 μ—†κ³ , λŒ€μ‹  λΉ λ₯΄κ²Œ νŠΉμ • 값이 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜κ±°λ‚˜ μˆ˜ν•™μ  μ§‘ν•© 연산을 ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜κ³  μžˆλ‹€.

set 생성

my_set = {1, 2, 3, 4}
empty_set = set() # 빈 set 생성

μ£Όμš” νŠΉμ§•

  • 쀑볡 λΆˆν—ˆ: λ™μΌν•œ 값은 ν•œ 번만 μ €μž₯됨
  • μˆœμ„œ μ—†μŒ: μΈλ±μŠ€κ°€ μ—†μ–΄ νŠΉμ • μœ„μΉ˜μ˜ 값을 μ‘°νšŒν•  수 μ—†μŒ
  • λ³€κ²½ κ°€λŠ₯: μƒˆλ‘œμš΄ μš”μ†Œ μΆ”κ°€, μ‚­μ œ κ°€λŠ₯ (단, μš”μ†Œ μžμ²΄λŠ” λ³€κ²½ λΆˆκ°€)

μ£Όμš” λ©”μ„œλ“œ

  • add(): μƒˆλ‘œμš΄ μš”μ†Œ μΆ”κ°€
  • remove(): νŠΉμ • μš”μ†Œ 제거 (μ—†μœΌλ©΄ 였λ₯˜ λ°œμƒ)
  • discard(): νŠΉμ • μš”μ†Œ 제거 (μ—†μœΌλ©΄ 였λ₯˜ λ°œμƒ μ•ˆ 함)
  • clear(): λͺ¨λ“  μš”μ†Œ μ‚­μ œ
  • copy(): set의 볡사본 생성함

μ˜ˆμ‹œ

my_set = {1, 2, 3}
my_set.add(4) # {1, 2, 3, 4}
my_set.remove(2) # {1, 3, 4}
my_set.discard(5) # 였λ₯˜ λ°œμƒν•˜μ§€ μ•ŠμŒ
my_set.clear() # 빈 set으둜 λ§Œλ“¦

2. set의 μ§‘ν•© μ—°μ‚°!

Python의 set은 μˆ˜ν•™μ—μ„œ μ‚¬μš©ν•˜λŠ” ν•©μ§‘ν•©, ꡐ집합, μ°¨μ§‘ν•©κ³Ό 같은 연산을 μ§€μ›ν•œλ‹€.

2-1. ν•©μ§‘ν•© (Union)

  • μ„€λͺ…: 두 μ§‘ν•©μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό ν•©μΉœ μ§‘ν•© (쀑볡 제거)
  • μ—°μ‚°μž: |
  • λ©”μ„œλ“œ: union()
set1 = {1, 2, 3}
set2 = {3, 4, 5}

result = set1 | set2 # {1, 2, 3, 4, 5}
# λ˜λŠ”
result = set1.union(set2) # {1, 2, 3, 4, 5}

2. ꡐ집합 (Intersection)

  • μ„€λͺ…: 두 μ§‘ν•©μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” μš”μ†Œλ§Œμ„ λͺ¨μ€ μ§‘ν•©
  • μ—°μ‚°μž: &
  • λ©”μ„œλ“œ: intersection()
set1 = {1, 2, 3} 
set2 = {3, 4, 5}

result = set1 & set2 # {3} 
# λ˜λŠ” 
result = set1.intersection(set2) # {3} 

3. μ°¨μ§‘ν•© (Difference) - μ„€λͺ…: 첫 번째 μ§‘ν•©μ—μ„œ 두 번째 집합에 μ—†λŠ” μš”μ†Œλ“€λ‘œλ§Œ 이루어진 μ§‘ν•© - μ—°μ‚°μž: - - λ©”μ„œλ“œ: difference()

set1 = {1, 2, 3} 
set2 = {3, 4, 5}

result = set1 - set2 # {1, 2} 
# λ˜λŠ” 
result = set1.difference(set2) # {1, 2} 

4. λŒ€μΉ­ μ°¨μ§‘ν•© (Symmetric Difference)

  • μ„€λͺ…: 두 μ§‘ν•© 간에 μ„œλ‘œ κ³΅ν†΅λ˜μ§€ μ•ŠλŠ” μš”μ†Œλ“€λ§Œ λͺ¨μ€ μ§‘ν•©
  • μ—°μ‚°μž: ^
  • λ©”μ„œλ“œ: symmetric_difference()
set1 = {1, 2, 3} set2 = {3, 4, 5}

result = set1 ^ set2 # {1, 2, 4, 5} 
# λ˜λŠ” 
result = set1.symmetric_difference(set2) # {1, 2, 4, 5} 

3. set κ΄€λ ¨ 기타 μ—°μ‚°

  • λΆ€λΆ„μ§‘ν•© 확인: issubset()
set1 = {1, 2} 
set2 = {1, 2, 3}

set1.issubset(set2) # True 
  • μƒμœ„μ§‘ν•© 확인: issuperset()
set1 = {1, 2, 3} 
set2 = {1, 2}

set1.issuperset(set2) # True 
  • μ„œλ‘œμ†Œ 확인: isdisjoint()
    두 집합이 κ³΅ν†΅λœ μš”μ†Œκ°€ μ—†μœΌλ©΄ True.
set1 = {1, 2} set2 = {3, 4}

set1.isdisjoint(set2) # True 

πŸ’‘ 정리

  • set은 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•Šκ³ , μˆœμ„œκ°€ μ—†λŠ” 데이터 ꡬ쑰
  • μˆ˜ν•™μ  μ§‘ν•© 연산이 κ°€λŠ₯ν•΄μ„œ λ°μ΄ν„°μ˜ 포함 μ—¬λΆ€, 곡톡 μš”μ†Œ 등을 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆλ‹€.
  • ν•©μ§‘ν•©, ꡐ집합, μ°¨μ§‘ν•© μ—°μ‚°μžλ‘œ |, &, -, ^ 등을 μ‚¬μš©ν•  수 μžˆλ‹€.

μ΄λ ‡κ²Œ set은 μ§‘ν•© 연산에 κ°•λ ₯ν•œ κΈ°λŠ₯을 μ œκ³΅ν•΄μ„œ μ—¬λŸ¬ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ 쓰일 수 μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€

0개의 λŒ“κΈ€