[Python] 집합 자료형(set)

David Kim·2022년 10월 27일
0

Python

목록 보기
8/11


군대 있었을 당시 꿀 가튼 휴일날 당직실에서 부대 모든 병사는 연병장으로 '집합'이라는 아주 끔찍한 소리를 들을때가 있었다. 고로 오늘은 파이썬에서 집합 자료형을 리뷰하겠다.

집합 자료형(set)

파이썬에서 자료형은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.

집합 자료형은 set이라는 키워드를 사용해 만들수 있다.

>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
>>> s2 = set(["Apple"])
>>> s2
{'a', 'e', 'p', 'l'}

위의 s1처럼 set()하고 괄호 안에 리스트를 입력하여 만들 수 있고 s2 처럼
문자열을 넣어 만들 수도 있다. 그치만 p라는 문자가 하나 빠져있고 순서도
이상한데 이거 왜 이럴까?

set의 두가지 특징

  • 중복이 안된다.
  • 순서가 없다.

리스트나 튜플은 순서가 있는 자료형(ordered)이기에 인덱스를 통해 자료형 값을 얻을 수 있지만, set자료형은 순서가 없는(unordered)여서 인덱싱으로 값을 얻을 수 없다. 참고로 딕셔너리 또한 순서가 없는 자료형이라 인덱싱 지원이 안된다.

그렇다면!!! set 자료형을 저장된 값을 인덱싱으로 접근하려면 어떻게 해야할까? 아래와 같이 리스트나 튜플로 변환하면 된다.

>>> s1 = set([1,2,3])
>>> l1 = list(s1) ⬅️ 리스트로 변환
>>> l1
[1, 2, 3]
>>> l1[0]
1
>>> t1 = tuple(s1) ⬅️ 튜플로 변환
>>> t1
(1, 2, 3)
>>> t1[0]
1

교집합, 합집합, 차집합 구하기

set 자료형이 빛을 발휘하는 순간은 교집합, 합집합, 차집합을 구하기 정말 좋다.

>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])

교집합(intersection)

>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2) 혹은
>>> s2.intersection(s1)

합집합(union)

>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
>>> s2.union(s1)

차집합(difference)

>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8,  9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}

집합 자료형 관련 함수

값 1개 추가하기(add) <1개의 값만 추가 할 경우>

>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}

값 여러 개 추가하기(update)

>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}

특정 값 제거하기(remove)

>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}
profile
people rarely succeed unless they have fun in what they are doing

0개의 댓글