[Pytho]집합(set)
파이썬의 기본 자료구조인 집합(set)에 대해 알아보자
집합에서는 순서가 없으며, 중복을 허용하지 않다. 각 요소의 추가/삭제가 가능하다.
# 집합(set) # 순서없음, 중복없음, 추가/수정/삭제 가능 # 선언 a = set() b = set([1, 2, 3, 4, 4]) # 중복이 제거됨 c = set([1, 3, 5, 7, 9]) d = set([1, 2, 'keyboard', 'mouse', 'money']) e = {1, 2, 3, 'abc', 'def', 'ghi'} # key=value 쌍이 아닌 value만 존재할 경우 set으로 인식 f = {123, 'foo', (1, 2, 3), 10.123} print(type(a), type(b), type(c), type(d), type(e), type(f)) print("a = ", a) print("b = ", b) print("c = ", c) print("d = ", d) print("e = ", e) print("f = ", f) print() # 튜플 변환(set -> tuple) t = tuple(b) print("t = ", type(t), t) print("t = ", t[1:3]) print() # 리스트 변화(set -> list) l1 = list(c) l2 = list(e) print("l1 = ", type(l1)) print("l1 = ", l1) print("l2 = ", l2) print() # 길이 print(len(a)) print(len(b)) print(len(c)) print(len(d)) print(len(e)) print(len(f)) print() # 집합 자료형 활용 s1 = set([1, 2, 3, 7, 9]) s2 = set([1, 2, 3, 8, 10]) print("s1 & s2 = ", s1 & s2) # 교집합 print("s1 & s2 = ", s1.intersection(s2)) # 교집합 print("s1 | s2 = ", s1 | s2) # 합집합 print("s1 | s2 = ", s1.union(s2)) # 합집합 print("s1 - s2 = ", s1 - s2) # 차집합 print("s1 - s2 = ", s1.difference(s2)) # 차집합 print() # 중복원소 확인 print('s1 is disjoint s2 = ', s1.isdisjoint(s2)); # 교집합이 존재하면 False, 없으면 True print() # 부분 집합 확인 t1 = set([1, 2, 3, 4, 5]) t2 = set([1, 2, 3]) print("t1 = ", t1) print("t2 = ", t2) print("t1 is subset t2 = ", t1.issubset(t2)) # t1이 t2의 부분집합 여부 확인 (False) print("t2 is subset t1 = ", t2.issubset(t1)) # t2가 t1의 부분집합 여부 확인 (True) print("t1 is superset t2 = ", t1.issuperset(t2)) # t1이 t2의 부모집합 여부 확인 (True) print("t2 is superset t1 = ", t2.issuperset(t1)) # t2가 t1의 부모집합 여부 확인 (False) print() # 추가/제거 s1 = set([1, 2, 3, 4]) print("s1 = ", s1) s1.add(5) print("s1 = ", s1) s1.remove(2) print("s1 = ", s1) # s1.remove(7) <-- 없는 원소 삭제시 keyError 발생 s1.discard(3) print("s1 = ", s1) s1.discard(7) # 없는 원소 삭제시 에러가 발생하지 않는다. print("s1 = ", s1) s1.clear() # 모든 원소 제거 print("s1 = ", s1)
결과 :
<class 'set'> <class 'set'> <class 'set'> <class 'set'> <class 'set'> <class 'set'> a = set() b = {1, 2, 3, 4} c = {1, 3, 5, 7, 9} d = {1, 2, 'keyboard', 'money', 'mouse'} e = {1, 2, 3, 'abc', 'ghi', 'def'} f = {123, 10.123, (1, 2, 3), 'foo'} t = <class 'tuple'> (1, 2, 3, 4) t = (2, 3) l1 = <class 'list'> l1 = [1, 3, 5, 7, 9] l2 = [1, 2, 3, 'abc', 'ghi', 'def'] 0 4 5 5 6 4 s1 & s2 = {1, 2, 3} s1 & s2 = {1, 2, 3} s1 | s2 = {1, 2, 3, 7, 8, 9, 10} s1 | s2 = {1, 2, 3, 7, 8, 9, 10} s1 - s2 = {9, 7} s1 - s2 = {9, 7} s1 is disjoint s2 = False t1 = {1, 2, 3, 4, 5} t2 = {1, 2, 3} t1 is subset t2 = False t2 is subset t1 = True t1 is superset t2 = True t2 is superset t1 = False s1 = {1, 2, 3, 4} s1 = {1, 2, 3, 4, 5} s1 = {1, 3, 4, 5} s1 = {1, 4, 5} s1 = {1, 4, 5} s1 = set()
최신 댓글