중복되지 않는 자료형을 원할 때 사용하는 set
중복을 허용하지 않고, 순서가 없기 때문에 집합에 관한 것을 처리할 때 유용하다.
set (집합 자료형)
- myset = set() 으로 선언
- 중복된 값을 허용하지 않으므로 순서가 없음 --> 인덱싱 불가능
myset1 = set([1, 2, 2, 3)]
myset2 = set('hello')
print(myset1) # {1, 2, 3}
print(myset2) # {h, e, l, o}
중복된 값이 없으므로 원소의 종류 개수를 세거나 일부러 중복을 피하는 경우 유용하게 쓸 수 있다.
또한 정말 집합 그 자체이므로 순서가 없어 인덱싱이 필요할 땐 리스트 또는 튜플로의 변환이 필요하다.
집합 연산 1) 교집합
- & / set.intersection(set) 으로 사용
- 두 집합의 공통된 원소를 반환
myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])
print(myset1 & myset2) # {4, 5}
print(myset1.intersection(myset2)) # {4, 5}
print(myset2.intersection(myset1)) # {4, 5}
실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과
집합 연산 2) 합집합
- | / set.union(set) 으로 사용
- 두 집합의 모든 원소를 반환
myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])
print(myset1 | myset2) # {1, 2, 3, 4, 5, 6, 7, 8}
print(myset1.union(myset2)) # {1, 2, 3, 4, 5, 6, 7, 8}
print(myset2.union(myset1)) # {1, 2, 3, 4, 5, 6, 7, 8}
실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과
집합 연산 3) 차집합
- - / set.difference(set) 으로 사용
- 두 집합의 모든 원소를 반환
myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])
print(myset1 - myset2) # {1, 2, 3}
print(myset2 - myset1) # {6, 7, 8}
print(myset1.difference(myset2)) # {1, 2, 3}
print(myset2.difference(myset1)) # {6, 7, 8}
실제 집합에서의 연산과 마찬가지로 순서에 따라 결과가 다름
집합 연산 4) 대칭 차집합
- ^ / set.symmetric_difference(set) 으로 사용
- 두 집합의 합집합 - 교집합
myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])
print(myset1 ^ myset2) # {1, 2, 3, 6, 7, 8}
print(myset1.symmetric_difference(myset2)) # {1, 2, 3, 6, 7, 8}
print(myset2.symmetric_difference(myset1)) # {1, 2, 3, 6, 7, 8}
실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과
관련 함수 1) add
- set.add(n) 으로 사용
- 원소 한 개를 추가할 때 사용
myset = set([1, 2, 3])
myset.add(4)
print(myset) # {1, 2, 3, 4}
관련 함수 2) update
- set.update([n1, n2, n3]) 으로 사용
- 원소 여러 개를 추가할 때 사용
myset = set([1, 2, 3])
myset.update([4, 5, 6])
print(myset) # {1, 2, 3, 4, 5, 6}
관련 함수 3) remove / discard
- set.remove(n) / set.discard(n) 으로 사용
- 원소를 삭제할 때 사용
- remove : 원소가 없다면 Key Error 발생
- discard : 원소가 없어도 Key Error 발생 X
myset = set([1, 2, 3])
myset.remove([4]) # Key Error
myset.discard([4]) # Key Error X
print(myset) # {1, 2}
'Programming > - Python' 카테고리의 다른 글
[Python] Dictionary (딕셔너리) 정리 (0) | 2022.11.02 |
---|---|
[Python] Stack (스택) 기본 사용법 (0) | 2022.06.20 |
[Python] 반복문 사용 : range / enumerate (0) | 2022.05.12 |
[Python] Collections : 개수 세기 (Counter) (0) | 2022.05.10 |
[Python] 리스트 정리 (index / append / del / insert / remove) (0) | 2022.04.22 |
댓글