프로그래밍/Python
[파이썬/python] [집합/set] 기본원리
Rolen
2022. 9. 28. 23:08
집합(set)는 순서가 없는 자료형이다.
동일한 값을 가질 수 없음.
교집합, 합집합, 차집합, 대칭차집합 등 집합연산 수행할 수 있다.
{}로 묶인다.
>> 집합(set) 생성 / 출력<<
set = set()
set = {1, 2, 3, 4}
lst = [1, 2, 3, 3, 3]
a = set(lst) # {1, 2, 3} // 값의 중복없음
a_tuple = (1, 2, 3, 3, 3)
a = set(a_tuple) # {1, 2, 3}
# 출력
alp = {'a', 'b', 'c'}
# only문자열 또는 문자열 + 숫자는
# {'b', 'c', 'a'} / {'c', 'a', 'b'} 등 순서에 상관없이 항상 바뀌어서 출력
a = {3, 2, 1} # 숫자만 있을시에는 값의 순서대로 출력됨 // {1, 2, 3}
>> 집합 메소드 <<
add(a) # 집합내에 a 원소 추가
discard(a) # 집합내의 a 원소 삭제
clear() # 집합내의 모든 원소 삭제
a_set = {1, 2, 3}
a_set.union(a) # a와의 합집합 (연산자: a_set | a)
a_set.difference(a) # a와의 차집합 (a_set - a)
a_set.intersection(a) # a와의 교집합 (a_set & a)
a_set.symmetric_difference(a) # a와의 대칭 차집합 (a_set ^ a) // 교집합을 뺀 합집합
a = {1, 2, 3}
b = {1, 2}
c = {1, 4, 5}
d = {6, 7, 8}
b.issubset(a) # b는 a의 '부분집합'인가? // True
c.issubset(a) # c는 a의 부분집합인가? // False
a.issuperset(b) # a는 b의 '상위집합'인가? // True
a.issuperset(c) # a는 c의 상위집합인가? // False
c.isdisjoint(a) # c는 a와 '서로소'인가? // False
c.isdisjoint(d) # c는 d와 서로소인가? // True
대표적으로 경우의 수를 계산하는
곱집합, 데카르트 곱의 내용은 아래 링크 참고
https://hello-ming.tistory.com/entry/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B3%B1%EC%A7%91%ED%95%A9product-set-%EC%A7%91%ED%95%A9%EC%9D%98-%EC%84%B8%EC%A0%9C%EA%B3%B1-%EC%97%B0%EC%82%B0-%EC%A3%BC%EC%82%AC%EC%9C%84-2%EB%B2%88-3%EB%B2%88-%EB%8D%98%EC%A1%8C%EC%9D%84-%EB%95%8C-%EA%B0%80%EC%A7%80%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0
728x90