JangBaGeum.gif

[Python] 파이썬 기본 문법 - set (집합) 본문

ETC/알고리즘 & 문법

[Python] 파이썬 기본 문법 - set (집합)

장바금 2022. 2. 9. 14:37

이전글

 

[알고리즘] 파이썬 기본 문법 - map() ( + 람다 함수)

[알고리즘] 파이썬 기본 문법 - 연산자와 숫자 처리 함수 (+ 랜덤 함수) 목차 사칙연산, 제곱, 나머지와 몫 숫자 처리 함수 랜덤 함수 1. 사칙연산, 제곱 나머지와 몫 연산 설명 예 + 더하기 5 + 3 = 8 -

jangbageum.tistory.com

 

 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)