이전글
set()
set 자료형은 순서가 없이 unique 한 값을 가집니다.
그러기에 값들의 인덱싱 값을 얻을 수 없습니다.
만약 set 자료형에 저장된 값들의 인덱싱 값을 가져오려면 리스트 혹은 튜플 자료형으로 변환 후 가져올 수 있습니다.
set 자료형은 수학의 집합과 비슷한 성격을 가집니다.
set 선언
set 자료형은 딕셔너리 자료형과 같이 중괄호 " { } "를 사용하기에, 중괄호만으로 선언할 수 없고 set생성자를 사용해야 합니다.
>>> s = {} # dictionary
>>> type(s)
<class 'dict'>
>>> s = set()
>>> type(s) # set
<class 'set'>
set 생성자에 리스트, 문자열, 튜플과 같은 iterable 한 객체를 넣어 set을 만들 수 있습니다.
set 생성자 없이 중괄호 안에 값을 넣는 방법으로도 set을 만들 수 있습니다.
>>> s1 = set([1,3,5,7]) # set 생성자 이용
>>> s1
{1, 3, 5, 7}
>>> s2 = {1, 3, 5, 7} # 중괄호만 이용
>>> s2
{1, 3, 5, 7}
중복된 값이 없는 unique 한 값을 가집니다. (중복 자동 제거)
>>> s = {1, 5, 1, 1, 1, 3, 7} # 중복되는 1 자동 제거
>>> s
{1, 3, 5, 7}
값 추가•제거 함수
한 개의 값 추가하기 - add()
>>> s = set([1, 3, 5])
>>> s.add(7)
>>> s
{1, 3, 5, 7}
두 개 이상의 값 추가하기 - update()
>>> s = set([1, 3, 5, 7])
>>> s.update([9, 11, 13])
>>> s
{1, 3, 5, 7, 9, 11, 13}
특정 값 제거하기 - remove()
>>> s = ([1, 3, 5, 7])
>>> s.remove(3)
>>> s
{1, 5, 7}
set의 집합 연산
| - 합집합 연산자
>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7}
>>> c = a | b
>>> a
{1, 2, 3, 4, 5}
>>> b
{3, 4, 5, 6, 7}
>>> c
{1, 2, 3, 4, 5, 6, 7}
& - 교집합 연산자
>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7}
>>> c = a & b
>>> a
{1, 2, 3, 4, 5}
>>> b
{3, 4, 5, 6, 7}
>>> c
{3, 4, 5}
- - 차집합 연산자
>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7}
>>> c = a - b
>>> a
{1, 2, 3, 4, 5}
>>> b
{3, 4, 5, 6, 7}
>>> c
{1, 2}
^ - 대칭 차집합 연산자 (합집합 - 교집합)
>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7}
>>> c = a ^ b
>>> a
{1, 2, 3, 4, 5}
>>> b
{3, 4, 5, 6, 7}
>>> c
{1, 2, 6, 7}
|=, &=, -=, ^= - = 과 조합함으로써 연산과 동시에 할당합니다.
>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7}
>>> a |= b
>>> a
{1, 2, 3, 4, 5, 6, 7}
>>> b
{3, 4, 5, 6, 7}
set의 연산 메서드
메서드 | 설명 | 예시 |
union() | 합집합 | set3 = set1.union(set2) |
intersection() | 교집합 | set3 = set1.intersection(set2) |
difference() | 차집합 | set3 = set1.difference(set2) |
symmetric_difference() | 대칭 차집합 (합집합 - 교집합) | set3 = set1.symmetric_difference(set2) |
기타 메서드
메서드 | 설명 | 예시 |
copy() | 얕은 복사 가능 (생성자로 복사 가능) | set2 = set1.copy() |
issubset() | 부분집합 여부 확인 | set1.issubset(set2) (result : True or False) |
issuperset() | issybset과 반대 superset인지 확인 | set1.issuperset(set2) (result : True or False) |
isdisjoint() | 교집합이 없으면 True, 있으면 False | set1.isdisjoint(set2) (result : True or False) |
'ETC > 알고리즘 & 문법' 카테고리의 다른 글
[알고리즘] 정렬 알고리즘 (Sorting Algorithm) (0) | 2022.02.21 |
---|---|
[알고리즘] 완전 탐색 • 브루트 포스 (Brute Force) (0) | 2022.02.16 |
[알고리즘] 재귀 함수 ( Recursive Function ) ( + 팩토리얼과 피보나치수열) (0) | 2022.02.14 |
[Python] 파이썬 기본 문법 - map() ( + 람다 함수) (0) | 2022.02.05 |
[Python] 파이썬 기본 문법 - 연산자와 숫자 처리 함수 (+ 랜덤 함수) (0) | 2022.02.01 |