🐹 μ»¬λ ‰μ…˜ νƒ€μž… - μ„ΈνŠΈ

λ―Όλ‹¬νŒ½μ΄μš°μœ Β·2024λ…„ 5μ›” 4일

🐹 파이썬 기초

λͺ©λ‘ 보기
7/19

μ˜€λŠ˜μ€ μ»¬λ ‰μ…˜ νƒ€μž… 쀑 ν•˜λ‚˜μΈ μ„ΈνŠΈ(set)에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

πŸ’‘ 1. μ„ΈνŠΈ

μ„ΈνŠΈ(set)λŠ” μ€‘λ³΅λ˜μ§€ μ•Šμ€ ν•­λͺ©λ“€μ˜ μ»¬λ ‰μ…˜μ΄λ‹€. μ€‘κ΄„ν˜Έ({})와 set(리슀트) ν˜•νƒœμ˜ ν•¨μˆ˜λ‘œ 생성할 수 μžˆλ‹€.

s1 = {1, 3, 5, 7}
print(s1) # 좜λ ₯: {1, 3, 5, 7}
print(type(s1)) # 좜λ ₯: <class 'set'>

s2 = {}
print(s2) # 좜λ ₯:  {}
print(type(s2)) # 좜λ ₯: <class 'dict'> 
# 데이터가 μ—†μœΌλ©΄ λ”•μ…”λ„ˆλ¦¬λ‘œ 인식

s3 = set([1, 3, 5, 7])
print(s3) # 좜λ ₯: {1, 3, 5, 7}
print(type(s3)) # 좜λ ₯: <class 'set'>

li1 = [1, 2, 3, 4]
print(type(li1)) # 좜λ ₯: <class 'list'>
s4 = set(li1)
print(type(s4)) # 좜λ ₯: <class 'set'>

리슀트의 쀑볡 데이터λ₯Ό μ œκ±°ν•˜κ³  μ‹ΆμœΌλ©΄ set둜의 λ³€ν™˜μ„ 톡해 κ°„λ‹¨ν•˜κ²Œ 쀑볡 데이터듀을 μ œκ±°ν•  수 μžˆλ‹€.

s5 = {1, 3, 5, 3, 7, 9, 1, 5, 10, 7}
print(s5) # 좜λ ₯: {1, 3, 5, 7, 9, 10}

li2 = [1, 3, 5, 3, 7, 9, 1, 5, 10, 7]
s6 = set(li2)
print(s6) # 좜λ ₯: {1, 3, 5, 7, 9, 10}

πŸ’‘ 2. μ„ΈνŠΈμ˜ λ©”μ„œλ“œ

2-1. add()

add() λ©”μ„œλ“œλŠ” μ„ΈνŠΈμ˜ μš”μ†Œλ₯Ό μΆ”κ°€ν•œλ‹€.

s1 = {1, 3, 5, 7}
s1.add(2)
s1.add(4)
s1.add(3)
print(s1) # 좜λ ₯: {1, 2, 3, 4, 5, 7}

2-2. update()

update() λ©”μ„œλ“œλŠ” μ„ΈνŠΈμ— μ—¬λŸ¬ 개의 μš”μ†Œλ₯Ό μΆ”κ°€ν•œλ‹€.

s1 = {1, 3, 5, 7}
s1.update([2, 4, 3])
print(s1) # 좜λ ₯: {1, 2, 3, 4, 5, 7}

2-3. remove()

remove()λŠ” μ„ΈνŠΈμ˜ μš”μ†Œλ₯Ό μ œκ±°ν•œλ‹€. 단, μ„ΈνŠΈμ— ν•΄λ‹Ή μš”μ†Œκ°€ μ—†μœΌλ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

s1 = {1, 3, 5, 7}
s1.remove(3)
print(s1) # 좜λ ₯: {1, 5, 7}

s1.remove(4) # KeyError: 4

2-4. discard()

remove()와 λ§ˆμ°¬κ°€μ§€λ‘œ μš”μ†Œλ₯Ό μ œκ±°ν•˜μ§€λ§Œ, μš”μ†Œκ°€ 없어도 μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

s1 = {1, 3, 5, 7}
d1.discard(3)
print(s1) # 좜λ ₯: {1, 5, 7}

s1.discard(4)
print(s1) # 좜λ ₯: {1, 5, 7}

🐹: 그럼 κ·Έλƒ₯ discard()λ₯Ό μ“°λ©΄ λ˜μ§€ 였λ₯˜κ°€ λœ¨λŠ” remove()λŠ” μ™œ μ‚¬μš©ν•˜λ‚˜μš”!!!!!
-> remove와 discardλŠ” 상황에 따라 κ΅¬λΆ„λ˜μ–΄ 쓰인닀. μš”μ†Œκ°€ 없어도 상관없이 μ½”λ“œλ₯Ό μ§„ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄ discardλ₯Ό μ“°λ©΄ λ˜μ§€λ§Œ, μš”μ†Œκ°€ μžˆλŠ”μ§€ μ—†λŠ”μ§€ μ•Œμ•„μ•Όν•˜κ±°λ‚˜ 였λ₯˜ μ²˜λ¦¬λ¬Έμ„ μ‚¬μš©ν•  땐 removeλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

2-5. copy()

μ„ΈνŠΈλ₯Ό λ³΅μ‚¬ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€. 두 μ„ΈνŠΈ κ°„ μš”μ†ŒλŠ” κ°™μ§€λ§Œ λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ 달라진닀.

s1 = {1, 3, 5, 7}
s2 = s1.copy()

print(s1) # 좜λ ₯: {1, 3, 5, 7}
print(s2) # 좜λ ₯: {1, 3, 5, 7}

print(id(s1)) # 좜λ ₯: 133746842319360
print(id(s2)) # 좜λ ₯: 133746842320032

νŒŒμ΄μ¬μ—μ„œμ˜ setλŠ” μ§‘ν•©μ—μ„œ μœ λž˜ν–ˆλ‹€. λ”°λΌμ„œ μ§‘ν•© 계산이 κ°€λŠ₯ν•˜λ‹€. set의 μ§‘ν•© 계산듀에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

2-6. union()

합집합을 κ³„μ‚°ν•œλ‹€. μ—°μ‚°μž | κ³Ό λ™μΌν•˜λ‹€.

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

result1 = s1.union(s2)
print(result1) # 좜λ ₯: {70, 40, 10, 50, 20, 60, 30}

result2 = s1 | s2 
print(result2) # 좜λ ₯: {70, 40, 10, 50, 20, 60, 30}

2-7. intersection()

ꡐ집합을 κ³„μ‚°ν•œλ‹€. μ—°μ‚°μž & 와 λ™μΌν•˜λ‹€.

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

result1 = s1.intersection(s2)
print(result1) # 좜λ ₯: {40, 50, 30}

result2 = s1 & s2
print(result2) # 좜λ ₯: {40, 50, 30}

2-8. difference()

차집합을 κ³„μ‚°ν•œλ‹€. μ—°μ‚°μž - 와 λ™μΌν•˜λ‹€.

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

result1 = s1.difference(s2)
print(result1) # 좜λ ₯: {10, 20}

result2 = s1 - s2
print(result2) # 좜λ ₯: {10, 20}

2-9. symmetric_difference()

λŒ€μΉ­ 차집합을 κ³„μ‚°ν•œλ‹€. μ—°μ‚°μž ^ 와 λ™μΌν•˜λ‹€.

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}

result1 = s1.symmetric_difference(s2)
print(result1) # 좜λ ₯: {20, 70, 10, 60}

result2 = s1 ^ s2
print(result2) # 좜λ ₯: {20, 70, 10, 60}

2-10. set의 μ •λ ¬

setλŠ” μˆœμ„œκ°€ μ—†λŠ” μžλ£Œν˜•μ΄κΈ° λ•Œλ¬Έμ— 데이터λ₯Ό μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•˜κ³  μ‹ΆμœΌλ©΄ 리슀트둜 λ³€ν™˜ ν›„ sort, sortedλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

result = list(result2)
result.sort()
print(result) # 좜λ ₯: [10, 20, 60, 70]
profile
μ–΄λ–»κ²Œ ν–„μŠ€ν„°κ°€ 개발자

0개의 λŒ“κΈ€