[개념] Chapter03-6 : 집합(set)

Date:     Updated:

카테고리:

태그:

인프런 강의 프로그래밍 시작하기 : 파이썬 입문을 듣고 정리한 내용입니다✏️.

집합(Set) 자료형(순서X, 중복X)

선언

a = set()
b = set([1, 2, 3, 4])
c = set([1, 4, 5, 6])
d = set([1, 2, 'Pen', 'Cap', 'Plate'])
e = {'foo', 'bar', 'baz', 'foo', 'qux'}
f = {42, 'foo', (1, 2, 3), 3.14159}

print('a -', type(a), a) # a - <class 'set'> set()
print('b -', type(b), b) # b - <class 'set'> {1, 2, 3, 4}
print('c -', type(c), c) # c - <class 'set'> {1, 4, 5, 6}
print('d -', type(d), d) # d - <class 'set'> {1, 2, 'Pen', 'Cap', 'Plate'}
print('e -', type(e), e) # e - <class 'set'> {'bar', 'qux', 'baz', 'foo'}
print('f -', type(f), f) # f - <class 'set'> {42, 3.14159, 'foo', (1, 2, 3)}

길이

print(len(a)) # 0
print(len(b)) # 4
print(len(c)) # 4
print(len(d)) # 5
print(len(e)) # 4
print(len(f)) # 4

변환

튜플 변환(set -> tuple)

t = tuple(b)
print('t -', type(t), t) # t - <class 'tuple'> (1, 2, 3, 4)
print('t -', t[0], t[1:3]) # t - 1 (2, 3)

리스트 변환(set -> list)

l = list(c)
l2 = list(e)

print('l -', l) # l - [1, 4, 5, 6]
print('l2 -', l2) # l2 - ['foo', 'baz', 'bar', 'qux']

집합 자료형 활용

집합 계산

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

# 교집합
print('s1 & s2 :', s1 & s2) # s1 & s2 : {4, 5, 6}
print('s1 & s2 :', s1.intersection(s2)) # s1 & s2 : {4, 5, 6}

# 합집합
print('s1 | s2 :', s1 | s2) # s1 | s2 : {1, 2, 3, 4, 5, 6, 7, 8, 9}
print('s1 | s2 :', s1.union(s2)) # s1 | s2 : {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 차집합
print('s1 - s2 :', s1 - s2) # s1 - s2 : {1, 2, 3}
print('s1 - s2 :', s1.difference(s2)) # s1 - s2 : {1, 2, 3}

# 중복 원소 확인
print('s1 & s2 :', s1.isdisjoint(s2)) # s1 & s2 : False # 중복 원소가 있다

# 부분 집합 확인
print('subset :', s1.issubset(s2)) # subset : False
print('superset :', s1.issuperset(s2)) # superset : False

추가 & 제거

s1 = set([1, 2, 3, 4])
s1.add(5)
print('s1 -', s1) # s1 - {1, 2, 3, 4, 5}

s1.remove(2)
print('s1 -', s1) # s1 - {1, 3, 4, 5}
# 없는 원소라면 예외 발생

s1.discard(3)
print('s1 -', s1) # s1 - {1, 4, 5}
# 없는 원소라도 예외가 발생하지 않음

s1.clear()
print('s1 -', s1) # s1 - set()

맨 위로 이동하기

Python 카테고리 내 다른 글 보러가기

댓글남기기