오뚝이개발자

[파이썬] set - 집합 자료형 본문

Language/파이썬

[파이썬] set - 집합 자료형

땅어 2020. 8. 6. 16:48
728x90
300x250

파이썬엔 set이라는 자료형이 있다. set은 영어로 "집합"을 뜻하는데 수학적으로도 알 수 있듯이 특징은 크게 다음의 두 가지이다.

  1. 순서가 없다.

  2. 중복을 허락하지 않는다.

1번 특징) list의 경우 for문을 사용해 원소에 접근하면 모든 원소들을 순차적으로 탐색할 수 있다. 하지만 set은 다르다. 동일하게 for문을 사용하여 원소에 접근하면 어떤 것이 먼저 나올지 모른다.

2번 특징) 집합은 중복원소를 허용하지 않는다. 따라서 set에 중복된 원소를 삽입하면 자동으로 중복제거가 된다. 즉 모든 값들은 unique하다.

 

set의 선언


list나 dict는 다음과 같이 선언한다.

l = []	# list 자료형
d = {}	# dict 자료형

set도 dict와 똑같은 {}를 사용한다. 따라서 중괄호만으로는 set을 선언할 수 없고, set 생성자를 따로 사용해야 한다.

>>> s = {}
>>> type(s)
<class 'dict'>
>>> s = set()
>>> type(s)
<class 'set'>
>>> s
set()

 

set의 원소 추가


add 메소드를 이용한다.

>>> s = set()
>>> s.add(1)
>>> s.add(2)
>>> s
{1, 2}

 

set의 원소 제거


remove 메소드를 이용한다.

>>> k = {1, 2, 3}
>>> k.remove(3)
>>> k
{1, 2}
>>> k.remove(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 3

단 위와 같이 remove를 사용할 때 없는 값을 지우려 하면 keyerror가 난다. 이는 list에서 사용하는 remove와 동일하다. 이러한 에러를 방지하기 위해서는 discard 메소드를 사용하면 된다.

>>> k = {1, 2, 3}
>>> k.discard(3)
>>> k
{1, 2}
>>> k.discard(3)
>>> k
{1, 2}

위와 같이 discard를 사용하면 없는 값을 지우려해도 keyerror가 나지 않는다.

 

출처 : https://wikidocs.net/16044

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

728x90
300x250
Comments