마음만 바쁜 사람

지난주 코딩 테스트를 보는데 숫자로 이루어진 한 집합이 다른 집합의 부분집합에 해당하는지 여부를 파악해야 하는 문제가 있었다. 인터넷 검색이 허용되는 시험이어서 다행히 바로 검색해 해결했지만 이정도 함수들은 외워두는게 좋을 것 같아서 이렇게 다시 한 번 정리하게 되었다.

 

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}
profile

마음만 바쁜 사람

@훌루훌루

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!