본문 바로가기

Python

[Python] set 자료형 remove() vs. discard()

set 자료형에는 특정 element를 삭제하는 메소드로 remove()와 discard()가 있다.

remove()

remove는 삭제하려는 값이 set에 존재하지 않다면 오류를 발생시킨다.

예를 들어 remove()를 이용해서 10이라는 element를 두번 제거해보자

s = set()

s.add(10)
s.remove(10)
s.remove(10)

첫번째 remove()는 예상대로 정상 동작하지만 두번째 remove()를 수행할 때는 다음과 같은 에러가 발생한다.

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    s.remove(10)
KeyError: 10

집합에 아무런 element도 없기 때문에 10이라는 element를 지우려고 할 때 KeyError가 발생한다.

discard()

하지만 discard는 삭제하고자 하는 값이 없으면 무시한다.

위 코드에서 remove() 메소드를 discard() 메소드로 변경해보자.

s = set()

s.add(10)
s.discard(10)
s.discard(10)

이 코드를 실행하면

Process finished with exit code 0

정상적으로 진행된다.

 

discard는 삭제하려는 값이 set에 존재하는지 따지지 않고 사용할 수 있다는 점에서 remove보다 편리하다.

 

출처: https://dev.plusblog.co.kr/41