컴퓨터/Python

Python (3) - set 자료형과 간단한 집합

달서비 2021. 7. 13. 12:25

파이썬에는 다양한 자료형들이 있습니다. 자료구조를 전부 설명하는 것을 목표로 하지만 앞에 말한 것대로 독특한 형태들을 이야기하는 것이 먼저라는 생각이 들어 이렇게 올려봅니다. 

벤다이어그램 - 픽사베이

 

set자료형

set는 집합에 관련되어있는 것들을 쉽게 해결하기 위하여 고안된 자료형입니다. 파이썬에서는 가장 마지막으로 나온 자료형입니다. 아래의 방법처럼 사용하면 됩니다

s1 = set([1,2,3])
print(s1)
#>> {1,2,3}

중괄호는 딕셔너리 자료형에서 사용하는데 딕셔너리 자료형을 선언할 때 사용하기 때문에 따로 set() 이런 모양으로 자료형을 선언합니다

 

set자료형의 특징은 다음과 같습니다

  1. 중괄호를 사용하지만 set()로 조정한다
  2. 중복을 허용하지 않는다
  3. 순서가 없다

 

set자료형의 추가 메소드

추가 name.add(obj)
여러개 추가 name.update(obj)
제거 name.remove(obj)
s1 = set([1,2,3,4,5])
s1.add(6) #1개의 값을 추가
#>> {1,2,3,4,5,6}
s1.update([7,8,9]) #여러개의 값을 추가
#>> {1,2,3,4,5,6,7,8,9}
s1.remove(1) #특정값을 제거
#>> {2,3,4,5,6,7,8,9}

 

set자료형을 이용한 간단한 집합 설명

 

위에서 말한 것처럼 set자료형은 집합을 사용하는 특징을 가지는 자료형입니다. 그렇기 떄문에 우리가 합집합,교집합,차집합등을 구할때 유용하게 계산할 수 있습니다.

지금부터 예시로 사용할 집합

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

print(s1 | s2) #합집합
print(s1 & s2) #교집합
print(s1 - s2) #차집합

#>> {1,2,3,4,5,7,9}
#>> {1,3,5}
#>> {2,4}

먼저 소스코드부터 적어놓았습니다. 4번째 줄부터 보면 합집합, 교집합, 차집합을 표현할 수 있습니다

집합을 모르시는 분들을 위해 밑에는 그림으로 간단하게 정리하였습니다

 

합집합 (S1∪S2)

합집합

print(s1 | s2) #합집합
#>> {1,2,3,4,5,7,9}

 

교집합 (S1∩S2)

교집합

print(s1 & s2) #교집합
#>> {1,3,5}

 

차집합 (S1-S2)

 

차집합

print(s1 - s2) #차집합
#>> {2,4}