코딩이 즐겁다

[파이썬 입문] 세트(set) 자료형의 remove()와 discard()의 차이점 본문

Python

[파이썬 입문] 세트(set) 자료형의 remove()와 discard()의 차이점

코즐 2025. 2. 2. 14:27
반응형

 

세트 타입의 remove() 메서드와 discard() 메서드란?

파이썬(Python)의 set(세트) 타입에서 remove() 메서드discard() 메서드는 둘 다 특정 원소를 제거하는 기능을 합니다. 하지만 중요한 차이점이 존재합니다. 두 가지 메서드의 차이를 정확하게 알고 있어야 파이썬 프로그래밍을 할 때 에러를 줄일 수 있습니다.

 

remove() 메서드 설명

세트에서 원소 x를 제거합니다. 만약 x가 세트에 없으면 KeyError가 발생합니다.

✅ 예제:

s = {1, 2, 3}
s.remove(2)  # {1, 3}
s.remove(4)  # KeyError 발생!

 

discard() 메서드 설명

세트에서 원소 x를 제거합니다. 만약 x가 세트에 없어도 오류가 발생하지 않습니다.

✅ 예제:

s = {1, 2, 3}
s.discard(2)  # {1, 3}
s.discard(4)  # 아무 일도 일어나지 않음 (오류 없음)

 


 

세트 타입의 remove() 메서드와 discard() 메서드의 차이점

remove 메서드와 discard 메서드의 차이점은 제거하려는 세트 타입 요소가 존재하는 경우와 그렇지 못한 경우에 에러를 반환하는 차이이다.

💡 discard() 메서드 사용 예제

✅ 예제:

# discard 메서드 사용하는 경우
se = {'a', 'b', 'c', 'd'}

se.discard('a')
se.discard('a')

print(se) # {'c', 'b', 'd'}

 

💡 remove() 메서드 사용 예제

✅ 예제:

# remove 메서드 활용하는 경우
se = {'a', 'b', 'c', 'd'}

se.remove('a')
se.remove('a')

print(se)

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[43], line 4
      1 se = {'a', 'b', 'c', 'd'}
      3 se.remove('a')
----> 4 se.remove('a')
      6 print(se)

KeyError: 'a'

 

💡 remove() 메서드를 에러 없이 사용하는 방법

remove() 메서드를 에러 없이 활용하려면 요소가 존재하는지 여부 파악을 하면서 사용해야 한다.

✅ 예제:

se = {'a', 'b', 'c', 'd'}

removeEl = 'a'

# remove 메서드 사용 전에 요소가 존재하는지 확인
if removeEl in se :
    se.remove(removeEl)

print(se) # {'c', 'b', 'd'}

 


 

 

반응형