지난주 코딩 테스트를 보는데 숫자로 이루어진 한 집합이 다른 집합의 부분집합에 해당하는지 여부를 파악해야 하는 문제가 있었다. 인터넷 검색이 허용되는 시험이어서 다행히 바로 검색해 해결했지만 이정도 함수들은 외워두는게 좋을 것 같아서 이렇게 다시 한 번 정리하게 되었다.
1. 합집합 (Union)
집합 연산에서 합집합에 해당하는 함수는 set.union과 OR연산자 |가 있다.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(set.union(a, b)) # {1, 2, 3, 4, 5, 6}
print(a | b) # {1, 2, 3, 4, 5, 6}
2. 교집합 (intersection)
교집합 연산은 AND 연산자 & 또는 set.intersection 메서드를 사용한다.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(set.intersection(a, b)) # {3, 4}
print(a & b) # {3, 4}
이를 이용해 한 세트가 다른 한 세트의 부분집합에 해당하는지 여부를 확인할 수 있다.
a = {1, 2, 3, 4}
b = {3, 4}
if b == a & b: # 교집합이 b와 같으면 true
print("true")
3. 차집합 (difference)
set.difference 또는 뺄셈 연산자 - 를 사용한다. 아마 가장 익숙한 연산이지 않을까 싶다.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(set.difference(a, b)) # {1, 2}
print(a - b) # {1, 2}
4. 대칭차집합 (symmetric difference)
대칭차집합 하면 잘 모르겠지만 그냥 XOR 연산자이다. set.stmmetric_difference 또는 ^ 기호를 사용한다.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(set.symmetric_difference(a, b)) # {1, 2, 5, 6}
print(a ^ b) # {1, 2, 5, 6}