TIL - 집합자료형 set()

Seob·2020년 7월 8일
0

TIL

목록 보기
7/36

set()은 집합자료형으로, 차집합, 합집합, 교집합 등 집합에 관련된 것을 처리하기 위해 존재하는 자료형이다.

특징

s1 = set([1, 2, 3])
print(s1)
s2 = set('hello')
print(s2)

>>>
{1, 2, 3}
{'l', 'h', 'o', 'e'}
  • 순서가 없다.
  • 중복을 허용하지 않는다.
  • 딕셔너리와 마찬가지로 순서가 없기 때문에 인덱싱을 지원하지 않는다.

Indexing set()

set()은 순서가 없기 때문에 리스트나 튜플로 변환해서 인덱싱 하는 방법이 있다.

s1 = set([1, 2, 3])
s2 = set('hello')
lst1 = list(s1)
tup1 = tuple(s1)
lst2 = list(s2)
tup2 = tuple(s2)
print(s1, lst1[1], tup1[1])
print(s2, lst2[1], tup2[1])

>>>
{1, 2, 3} 2 2
{'l', 'e', 'h', 'o'} e e

문자열의 경우 출력할 때마다 순서가 뒤죽박죽이 되기 때문에 문자열 집합을 인덱싱 하는 것은 큰 의미는 없어 보인다.

Intersection, Union and Difference

교집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1 & s2)
print(s1.intersection(s2))
print(s2.intersection(s1))

>>>
{4, 5, 6}
{4, 5, 6}
{4, 5, 6}

합집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1 | s2)
print(s1.union(s2))
print(s2.union(s1))

>>>
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}

차집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1 - s2)
print(s1.difference(s2))
print(s2 - s1)
print(s2.difference(s1))

>>>
{1, 2, 3}
{1, 2, 3}
{8, 9, 7}
{8, 9, 7}

자료형 관련 함수들

s1 = set([1, 2, 3])
s1.add(4)  # add one value
print(s1)

s1.update([5, 6, 7])  # add several values
print(s1)

s1.remove(5) #remove a value
print(s1)

>>>
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 6, 7}

점프 투 파이썬 참조

profile
Hello, world!

0개의 댓글