티스토리 뷰
파이썬의 데이터 타입 중에 집합(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()는 존재하지 않음을 보장하려고 할때 사용하면 될 것 같다.
'Language > Python' 카테고리의 다른 글
'PyInstaller' 설치 및 사용법 - 파이썬 실행파일(바이너리) 만들기 (0) | 2019.12.19 |
---|---|
파이썬 기본 연산자들의 시간 복잡도(Big-O) 정리 (0) | 2019.12.15 |
파이썬(Python) 집합(set) 타입, discard vs. remove 비교 (0) | 2019.12.14 |
파이썬(Python) 정수 자료형(Integer)과 오버플로우(Overflow) (0) | 2019.12.13 |
파이썬(Python) pip란 무엇인가? (0) | 2019.12.12 |
파이썬 리스트(배열)을 문자열로 변환하기 (Python list to string) (0) | 2019.12.12 |
댓글
공지사항
- Total
- 66,462
- Today
- 26
- Yesterday
- 407
링크
TAG
- 도커
- lsof
- hadoop
- java
- maven
- hdfs
- InterlliJ
- Jekyll
- 실리콘밸리
- 깃허브
- 인텔리제이
- nf_conntrack
- bash
- linux
- 리눅스
- 하둡
- 지킬
- 파이참
- pycharm
- monitoring
- pyinstaller
- 파이썬
- 자바
- Netfilter
- okhttp
- docker
- GitHub
- tls
- Python
- MacOS