[Python] 집합 자료형(set)이 뭐에요?

[Ted's Log] 테드로그·2021년 7월 18일
1

Python Study-note

목록 보기
2/5
post-thumbnail

👋   Prologue

  고등학교 수학의 첫 단원을 장식하는, 집합과 관련된 연산을 쉽게 할 수 있도록 도와주는 set 자료형이 python 2.3에 추가되었다. 집합 자료형은 다음과 같이 set 키워드를 통해서 만들 수 있다.

my_set = set([1, 2, 3])
print(my_set) 

# {1, 2, 3}

  위와 같이 set()의 괄호 안에 문자열과, 리스트, 튜플과 같이 iterable한 객체를 전달하여 집합 자료형을 만들 수 있다.

my_set = set("hello velog")
print(my_set) 

# {'h', 'l', 'g', ' ', 'v', 'e', 'o'}

🔍   집합 자료형의 특징

  집합 자료형의 특징을 하나의 영어 문장으로 표현하자면 'Unordered collection of unique element'이다. 즉 중복을 허용하지 않고, 순서를 가지지 않는 컬렉션이라는 것이다. Iterable한 다른 객체들은 ordered collection이기 때문에 인덱싱을 통해서 요소에 접근이 가능하지만, set 자료형은 그렇지 않다. 이와 같은 특성을 활용해서, 집합과 관련된 연산을 해야 할 때 유용하게 set 자료형을 사용할 수 있다.

💡   교집합, 차집합, 합집합, 대칭차집합 구하기

  우선 두 개의 set 자료형을 만들어 보자. s1은 1부터 6까지의 정수형 값을 가지고 있고 s2는 4부터 9까지의 값을 가지고 있다.

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

  교집합

  & 기호 또는 intersection 함수를 이용해서 구할 수 있다.

print(s1 & s2) # or use s1.intersection(s2)

# {4, 5, 6}

  차집합

  '-' 기호 또는 difference 함수를 이용해서 구할 수 있다.

print(s1 - s2) # or use s1.difference(s2)
print(s2 - s1) # or use s2.difference(s1)

# {1, 2, 3}
# {7, 8, 9}

  합집합

  '|' 기호 또는 union 함수를 이용해서 구할 수 있다.

print(s1 | s2) # or use s1.union(s2)

# {1, 2, 3, 4, 5, 6, 7, 8, 9}

  대칭차집합

  대칭차집합은 합집합에서 교집합을 뺀 집합 그룹이다. '^' 기호 또는 symmetric_difference 함수를 이용해서 구할 수 있다.

print(s1 ^ s2) # or use s1.symmetric_difference(s2)

# {1, 2, 3, 7, 8, 9}

📕   집합 자료형 내장 함수

  set 자료형은 mutable한 객체이기 때문에 내장함수를 통해서 요소를 새로 추가하거나, 제거할 수 있다. 자세한 내장 함수에 대한 정보는 W3스쿨즈에서 정리한 표를 링크로 확인할 수 있도록 하겠다.

참고자료

https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
https://www.w3schools.com/python/python_ref_set.asp

profile
성장하는 개발자가 되기 위한 발자취 🧑🏻‍💻

0개의 댓글