티스토리 뷰
반응형
파이썬의 데이터 타입 중에 집합(set) 타입이 있다. 집합 타입의 메소드 중에 특정 엘리먼트를 삭제하는 메소드가 두 개 있는데, 'discard()'와 'remove()'가 그것들이다. 이 두 메소드 모두 엘리먼트를 삭제하는 동작이 있는데 정확하게 어떤 차이점이 있는 것일까?
우선 remove() 메소드를 테스트해보자. 다음 코드를 보자.
s = set()
s.add(10)
s.remove(10)
s.remove(10)
remove() 메소드를 이용해서 '10'이라는 엘리먼트를 두번 제거했다. 첫번째 remove()는 예상대로 정상동작했지만 두 번째 remove()를 수행할 때 다음과 같은 에러가 발생한다.
Traceback (most recent call last):
File "test.py", line 5, in <module>
s.remove(10)
KeyError: 10
이미 집합에 아무런 엘리먼트도 없기 때문에 '10'이라는 엘리먼트를 지우려고 할 때 KeyError가 발생한다.
이제 위 코드에서 remove() 메소드를 discard() 메소드로 변경해보자.
s = set()
s.add(10)
s.discard(10)
s.discard(10)
이 코드를 실행해보면
Process finished with exit code 0
정상적으로 진행된다.
요약하면, remove() 메소드는 지우려는 엘리먼트가 존잰하지 않으면 KeyError가 발생하지만 discard() 메소드는 엘리먼트가 없어도 정상종료한다. remove()는 실제 존재하는 대상을 지우는 동작에, discard()는 존재하지 않음을 보장하려고 할때 사용하면 될 것 같다.
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker
- 도커
- 리눅스
- 청양고추
- 화분
- monitoring
- linux
- okhttp
- 깃허브
- 자바
- 고추
- 파이썬
- 파이참
- pycharm
- 상추 재배기
- Jekyll
- hadoop
- GitHub
- 베란다 텃밭
- 상추
- Python
- 하둡
- java
- 지킬
- 베란타 텃밭
- MacOS
- 텃밭
- 화분 버리기
- InterlliJ
- nf_conntrack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함