본문 바로가기
Python

[Python 기초] 파이썬 자료형 - 집합(set)

by dev수니 2021. 4. 8.
반응형

 

 

 

 1  집합(set)

 

집합(set)은 파이썬 2.3부터 지원하기 시작한 자료형으로 순서가 없고 중복을 허용하지 않는게 특징이다.

따라서 인덱싱, 슬라이싱이 불가능하다.

 

사용법은 아래와 같이 set(( ))또는 set([ ]) 또는 set({ }) 대괄호에 key 값을 입력하지않고 value만 입력 한다. {1,5,7}

 

>>> set1 = set([1,2,3])
>>> type(set1)
<class 'set'>
>>> set2 = set((1,2,3))
>>> type(set2)
<class 'set'>
>>> type(set({1,4,6,7}))
<class 'set'>
>>> type({1,2,35})
<class 'set'>

 

 

 

중복을 허용하지 않는다. 따라서 다음과 같이 중복되는 값을 빼고 저장한다.

>>> set3 = set('abbbbbbc')
>>> set3
{'c', 'b', 'a'}

 

 

 

 

 


 

 

 2  교집합

 

 

연산자 & 와 메서드 A.intersection(B) 를 사용한다.

 

&

>>> A = set(('a',1,4,'c'))    # 정수 4
>>> B = set((1,'c','4',2))    # 문자열 4
>>> A & B
{1, 'c'}  # 정수,문자,실수를 구분

위와 같이 문자열형태의 4와 정수형태의 4를 다른 형태로 구분한다.

 

A.intersection(B)

>>> A.intersection(B)
{1, 'c'}

 

 

 

 

 


 

 

 3 집합

 

연산자 | 와 A.union(B)를 사용한다.

 

|

>>> A|B
{1, 'c', 'a', 4, 2, '4'}

 

A.union(B)

>>> A.union(B)
{1, 'c', 'a', 4, 2, '4'}

 

 

 

 


 

 

 4  차집합 

 

연산자 - 와 A.diffence(B)를 사용한다. 차집합은 집합의 순서가 데이터를 결정한다.

 

-

>>> A-B
{'a', 4}
>>> B-A
{2, '4'}

 

A.difference(B) , B.difference(A)

>>> A.difference(B)
{'a', 4}
>>> B.difference(A)
{2, '4'}

 

 

 

 


 

 

 5  데이터 추가, 수정, 삭제

 

 

데이터 추가 : add() , update()

한개 추가
>>> A.add('g')
>>> A
{1, 4, 'g', 'c', 'a'}

여러개 추가
update((1,2,2,3,4))
update([1,45,7,6])

 

 

 

데이터 삭제 : remove() , discard()  모두삭제 : clear()

>>> A.remove(1)
>>> A
{'a', 4, 'c'}
>>> A.discard('a')
>>> A
{4, 'c'}
> A.clear()
>>> A
set()

 

 

 

 

데이터 수정 : A.difference_update(B) - 차집합을 원본 데이터로 저장

>>> A = set(('a',1,4,'c'))
>>> B = set((1,'c','4',2))
>>> A.difference_update(B)
>>> A
{4, 'a'}

 

데이터 수정 : A.intersection_update(B) - 교집합을 원본 데이터로 저장

>>> A = set(('a',1,4,'c'))
>>> B = set((1,'c','4',2))
>>> A.intersection_update(B)
>>> A
{1, 'c'}

 

 

 

 

 

 


 

 

 5  데이터 비교

 

A.isdisjoint(B)
두집합에 공통원소가 없니? 두집합의 원소가 모두 달라야 True
 bool 값으로 반환 True,False   # if 문에 잘 사용된다.

>>> A = set(('a',1,4,'c'))
>>> B = set((1,'c','4',2))
>>> C = set((3,5,'d','e'))
>>> A.isdisjoint(B)
False
>>> A.isdisjoint(C)
True

 

 

A.issubset(B) 

A가 B에 포함되니?
 bool 값으로 반환 True,False   # if 문에 잘 사용된다.

>>> D = set(('a',1,3,5,4,'c','d','e'))
>>> A.issubset(D)
True
>>> A.issubset(B)
False

 

 

 

반응형

댓글