Python

[Set] 집합 연산

비번변경 2022. 4. 30. 19:54

2021.09.26 - [알고리즘 기초] 동명이인 찾기 / Set 에서 Set의 개념을 간단하게 아래와 같이 정리했었다.

 

[알고리즘 기초] 동명이인 찾기 / Set

여러 사람의 이름이 저장된 리스트에서 동명이인의 이름 집합을 반환하는 문제이다. 집합; Set 리스트와 같이 정보를 여러 개 넣어서 보관하는 자료구조 같은 자료가 중복되어 저장되지 않고, 자

passwd.tistory.com

  • 리스트와 같이 여러 정보를 넣어서 보관하는 자료구조
  • 중복을 허용하지 않고, 자료의 순서가 없다.

 

여기에 더해서 set은 수학적 개념인 집합을 다룰 수 있는 데이터형이기도 한다. 집합과 명제할 때 그 집합 맞다.

따라서 이 글에서는 수학에서의 집합 개념을 python set으로 다룰 때 사용하는 연산, 함수 등을 정리해두려고 한다.

 

선언 및 초기화

set 데이터는 set 생성자 또는 중괄호로 선언하여 초기화할 수 있다.

 

생성자

a = set()
a.add(1)
a.add(2)
a.add(4)

print(type(a), a)

 

중괄호

dictionary 선언할 때와 다르게 key가 없다.

a = {1, 2, 4}
print(type(a))

그 외 집합 연산에 해당하지 않는 사용 방법은 이전 글을 참고하길 바란다.

 

 

집합 연산

set를 이용할 수 있는 연산은 합집합(Union), 교집합(Intersection), 차집합(Difference), 대칭 차집합(Symmetric Difference)이 존재한다.

 

 

합집합

합집합 \(A \cup B\)은 union 함수 또는 연산자 |를 사용하여 구할 수 있다.

a = {1, 2, 4}
b = {3, 4, 5, 6}

print(f"a = {a}")
print(f"b = {b}")
print(f"a | b = {a | b}")
print(f"a.union(b) = {a.union(b)}")

교집합

교집합 \(A \cap B\)은 intersection 함수 또는 연산자 &를 사용하여 구할 수 있다.

a = {1, 2, 4}
b = {3, 4, 5, 6}

print(f"a = {a}")
print(f"b = {b}")
print(f"a & b = {a & b}")
print(f"a.intersection(b) = {a.intersection(b)}")

 

차집합

차집합 \( A \setminus B \)은 difference 함수 또는 연산자 -를 사용하여 구할 수 있다.

a = {1, 2, 4}
b = {3, 4, 5, 6}

print(f"a = {a}")
print(f"b = {b}")
print(f"a - b = {a - b}")
print(f"a.difference(b) = {a.difference(b)}")​

 

대칭 차집합

대칭 차집합 \(A \triangle B\)은 difference 함수 또는 연산자 ^를 사용하여 구할 수 있다.

a = {1, 2, 4}
b = {3, 4, 5, 6}

print(f"a = {a}")
print(f"b = {b}")
print(f"a ^ b = {a ^ b}")
print(f"a.symmetric_difference(b) = {a.symmetric_difference(b)}")

 


참고 문서

https://wikidocs.net/16044

https://www.learnbyexample.org/python-set/