집합
2022. 11. 8. 12:51
부분집합 구하기
from itertools import combinations
arr = [1, 2, 3]
result = []
for i in range(len(arr)+1):
result = result+list(combinations(arr,i))
# result
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
파이썬의 itertools 라이브러리의 combinations 모듈을 사용.
combinations는 리스트와 부분집합의 길이를 인자로 받고 combinations 객체를 반환한다.
combinations 객체를 list로 형변환하면 부분집합을 얻을 수 있다.
교집합 구하기
set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])
print(set1 & set2)
print(set1.intersection(set2))
# 출력 결과
{3, 4}
{3, 4}
파이썬의 set 자료형으로 간단하게 구현가능
합집합 구하기
set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])
print(set1 | set2)
print(set1.union(set2))
# 출력 결과
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}
교집합과 마찬가지로 파이썬의 set 자료형으로 간단하게 구현가능
차집합 구하기
set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])
print(set1 - set2)
print(set1.difference(set2))
# 출력 결과
{1, 2}
{1, 2}
파이썬의 set 자료형으로 간단하게 구현가능
대칭 차집합(XOR) 구하기
set1 = set([1, 2, 3, 4])
set2 = set([3, 4, 5, 6])
print(set1 ^ set2)
# 출력 결과
{1, 2, 5, 6}
파이썬의 set 자료형으로 간단하게 구현가능
다중 집합의 합집합 구하기
def make_union(A, B):
A_copy = A.copy()
union = A.copy()
for element in B:
union.append(element) if element not in A_copy else A_copy.remove(element)
return union
리스트 A와 B를 매개변수로 전달하면 합집합 리스트 union을 반환한다.
다중 집합의 교집합 구하기
def make_intersection(A, B):
A_copy = A.copy()
intersection = []
for element in B:
if element in A_copy:
A_copy.remove(element)
intersection.append(element)
return intersection
리스트 A와 B를 매개변수로 전달하면 교집합 리스트 intersection을 반환한다.