개발 이야기/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}