개발 이야기/Python

Python - 08. 집합(set) 자료형

Crazy Lazy 2021. 7. 18. 21:03

1. 집합(set) 정의 및 특징.

- 자료들의 집합을 나타내며, 수학의 집합을 연상.

- 중괄호 { } 를 감싸서 표현.

- 집합 연산(교집합,합집합,차집합) 가능.

- 중복 원소를 갖지 않음. (이 특징으로 인해, 필터 역할로 주로 사용)

- 요소의 순서가 유지되지 않음. (Unordered)

- 순서가 보장되지 않으므로, 인덱싱 미지원. (반드시 인덱싱을 써야하는 상황이면 리스트나 튜플로 변환 후 사용 할 것.)

 

생성 예시)

a=set()			# 빈값으로 생성 시 {} 로 대체하면, dict 로 생성됨에 주의.
b=set(['ab','cd'])
c=set('test')
d={'a','b','c'}

# 순서를 보장하지 않기에 결과가 다르게 표현될 수 있음에 유의.
print(type(a),a)	# 결과 : <class 'set'> set()
print(type(b),b)	# 결과 : <class 'set'> {'cd', 'ab'}
print(type(c),c)	# 결과 : <class 'set'> {'t', 'e', 's'}
print(type(d),d)	# 결과 : <class 'set'> {'c', 'a', 'b'}

 

2. 요소 추가/수정/삭제

a=set([1,2])
b=set('ab')

# 추가.
a.add(3)
b.update('c','d')
print(a,b)		# 결과 : {1, 2, 3} {'c', 'a', 'd', 'b'}

# 삭제
a.remove(2)
b.remove('c')
print(a,b)		# 결과 : {1, 3} {'a', 'd', 'b'}

 

3. 집합 관련 사용법.

a={1,2,3,4,5,6}
b={3,6,9,12}

# 교집합
a&b			# 결과 : {3, 6}
a.intersection(b)	# 결과 : {3, 6}

# 합집합
a|b			# 결과 : {1, 2, 3, 4, 5, 6, 9, 12}
a.union(b)		# 결과 : {1, 2, 3, 4, 5, 6, 9, 12}

# 차집합
a-b			# 결과 : {1, 2, 4, 5}
a.difference(b)		# 결과 : {1, 2, 4, 5}
b-a			# 결과 : {9, 12}
b.difference(a)		# 결과 : {9, 12}