About Python – “집합 자료형 – Set”
About Python – “집합 자료형 – Set”
12월 22, 2021
파이썬의 집합 자료형 (Set)
집합은 특정한 조건에 맞는 별개의 원소들의 모임을 의미합니다. 파이썬에서 집합 자료형을 사용하기 위해서는 set()
를 사용하면 됩니다.
set1 = set(["사자","코끼리","기린","범고래","코뿔소"])
print(set1)
print(type(set1))
# {'기린', '코끼리', '범고래', '코뿔소', '사자'}
# <class 'set'>
집합 자료형은 튜플이나 리스트 자료형과 같이 순서가 존재하지 않습니다. 순서를 이용해서 리스트나 튜플의 경우에는 인덱싱이나 슬라이싱을 할 수 있었는데, 집합의 경우에는 인덱싱이나 슬라이싱을 할 수 없습니다.
파이썬의 집합 자료형 활용하기
이것은 드모르간의 법칙을 벤 다이어그램으로 나타낸 것입니다. 집합 A와 B의 합집합의 여집합은 A의 여집합과 B의 여집합의 교집합과 같다는 것입니다.
ALL = set([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) # 전체 집합을 정의하였습니다.
setA = set([2,4,6,8,10,12,14,16,18,20]) #2의 배수를 원소로 가집니다.
setB = set([3,6,9,12,15,18]) #3의 배수를 원소로 가집니다.
# 1-1) A와 B의 합집합을 나타내기
setAB = setA | setB # 합집합은 "|" 기호로 나타냅니다.
print("A와 B의 합집합은, %s" % str(setAB)) # union()함수를 이용할 수도 있습니다.
print(setA.union(setB))
# 1-2) A와 B의 합집합의 여집합을 나타내기
CsetAB = ALL - setAB # 차집합은 "-" 기호로 나타냅니다.
print("A와 B의 합집합의 여집합은, %s" % str(CsetAB))
print(ALL.difference(setAB)) # diffefence()함수를 이용할 수도 있습니다.
# 2-1) A와 B의 여집합 나타내기
CsetA = ALL - setA
CsetB = ALL - setB
print("A의 여집합은, %s" % str(CsetA))
print("B의 여집합은, %s" % str(CsetB))
# 2-2) A의 여집합과 B의 여집합의 교집합 나타내기
setFinal = CsetA & CsetB # 교집합은 "&" 기호로 나타냅니다.
print("A의 여집합과 B의 여집합의 교집합은, %s" % str(setFinal))
print(CsetA.intersection(CsetB)) # intersection()함수를 이용할 수도 있습니다.
# 3) 1의 결과와 2의 결과가 같은지 확인
if CsetAB == setFinal:
print("드모르간의 법칙이 성립합니다.")
# A와 B의 합집합은, {2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20}
# {2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20}
# A와 B의 합집합의 여집합은, {1, 5, 7, 11, 13, 17, 19}
# {1, 5, 7, 11, 13, 17, 19}
# A의 여집합은, {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
# B의 여집합은, {1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20}
# A의 여집합과 B의 여집합의 교집합은, {1, 5, 7, 11, 13, 17, 19}
# {1, 5, 7, 11, 13, 17, 19}
# 드모르간의 법칙이 성립합니다.
위의 그림을 파이썬으로 나타내 보는 코드입니다. 교집합, 차집합, 합집합을 나타내는 방법을 기술하였습니다.