파이썬 집합에 대해 알아보자
파이썬 집합에 대해 알아보자 — #파이썬집합 AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 파이썬 집합 파이썬 ...
#파이썬집합
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
파이썬 집합
파이썬 자료형에는 집합도 존재합니다. 집합의 특징으로는 중복되는 요소를 순서없이 배열하는 것입니다. 주로 멤버십 검사나 데이터의 중복 제거에 사용된다고 합니다.
집합을 만들자
집합을 만들기 위해서는
파이썬에서 집합을 만들기 위해서는 중괄호 {} 또는 set() 함수를 사용합니다. 아래 집합을 만들고 type검사를 해보겠습니다.
| fruits = {'apple', 'banana', 'mango'} |
|---|
type(fruits)<class 'set'> |
|---|
type을 알아보니 set이라는 타입이 나왔습니다. 집합과 set() 메서드가 다른 개념인줄 알았는데 동일한 개념이었습니다.
빈집합을 만들때
빈집합을 만들때는 set() 메서드를 사용합니다.
| bin = set() |
|---|
type(bin)<class 'set'> |
|---|
역시나 type은 set임을 알 수 있습니다.
set()으로 집합만들기
set() 메서드를 사용해서 집합을 만들 수 있습니다. 문자열이나 리스트의 중복요소를 제거하는데 사용 가능합니다.
| set('apple') |
|---|
| {'e', 'a', 'p', 'l'} |
|---|
set은 요소들을 알파벳 순서가 아닌 무작위로 나열합니다. 같은 방식을 리스트에도 적용가능합니다.
| sports = \['soccor', 'baseball', 'tennis', 'baseball'\]set(sports) |
|---|
| {'tennis', 'baseball', 'soccor'} |
|---|
중복된 요소를 제거하고, 무작위로 나열된걸 볼 수 있습니다.
집합의 연산
수학연산
수학에는 다양한 집합의 연산이 존재합니다. 교집합, 합집합, 차집합 등 파이썬에서 이와 같은 기능을 제공합니다.
파이썬에는 합집합, 교집합, 차집합, 대칭 차집합 연산이 있습니다.
| a = set('supercalifragilisticexpialidocious')b = set('floccinaucinihilipilification') |
|---|
| a{'r', 'x', 'p', 'u', 'o', 'l', 's', 'd', 'g', 'f', 'e', 't', 'i', 'a', 'c'}b{'n', 'p', 'h', 'u', 'o', 'l', 'f', 't', 'i', 'a', 'c'} |
|---|
집합의 연산을 위해 무작위 긴 영단어 두가지를 가져와 set으로 먼저 분리해주었습니다. 중복된 글자를 제거하니 남는 글자가 몇 없네요.
합집합
| a | b |
|---|
| # a또는 b에 포함된, 혹은 둘다에 포함된 요소{'x', 'n', 'h', 'u', 'o', 'l', 's', 'd', 'f', 'e', 't', 'i', 'a', 'c', 'r', 'p', 'g'} |
|---|
중복된 요소를 하나만 적용하여 합집합이 만들어 졌습니다.
교집합
| a & b |
|---|
| # a와 b에 모두 포함되어 있는 요소{'p', 'u', 'o', 'l', 'f', 't', 'i', 'a', 'c'} |
|---|
차집합
| a - bb - a |
|---|
| # a - b{'r', 'x', 's', 'd', 'e', 'g'}# b - a{'n', 'h'} |
|---|
대칭 차집합
대칭 차집합은 아래 그림과 같습니다. 합집합에서 교집합을 뺀 나머지 요소들입니다.
| a ^ b |
|---|
| {'r', 'x', 'n', 'h', 's', 'd', 'g', 'e'} |
|---|
집합 컴프리헨션
이전글에서 배운 리스트 컴프리헨션과 동일하게 set에서도 컴프리헨션을 적용할 수 있습니다.
| comp = {x for x in a if x not in 'abcdefghi'} |
|---|
| {'r', 'x', 'p', 'u', 'o', 'l', 's', 't'} |
|---|
위에서 사용한 a = set('supercalifragilisticexpialidocious")에 조건을 걸어 요소를 뽑아내었습니다.



