정리노트

[파이썬/python] [집합/set] 기본원리 본문

프로그래밍/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