
집합(Set)형
# 집합(Sets) 특징
# 집합(Sets) 자료형(순서X, 중복X)
집합(Sets)사용법
집합 선언
집합 특징
집합 추가
집합 관련 함수
# 선언
a = set() #빈 집합
b = set([1, 2, 3, 4]) #원소를 리스트 형식으로 넣어주면 된다.
# b = set([1, 2, 3, 4, 4, 4])로하고 print(b)하면 {1,2,3,4}로 내부적으로 중복을 허용하지 않는다.
c = set([1, 4, 5, 6])
d = set([1, 2, 'Pen', 'Cap', 'Plate'])
e = {'foo', 'bar', 'baz', 'foo', 'qux'} #{}에서 키가 없이 원소만 나열하면 set이다.
f = {42, 'foo', (1, 2, 3), 3.14159}
print('a - ', type(a), a) #a - <class 'set'> set()
print('b - ', type(b), b, 2 in b) #b - <class 'set'> {1, 2, 3, 4} True
#in연산자 사용 가능. 리스트,튜플,딕셔너리에서 하는것처럼 연산자도 사용할 수 있다.
#딕셔너리와 set은 순서x여서 슬라이스가 안된다.
print('c - ', type(c), c) #c - <class 'set'> {1, 4, 5, 6}
print('d - ', type(d), d) #d - <class 'set'> {1, 2, 'Pen', 'Plate', 'Cap'}
print('e - ', type(e), e) #e - <class 'set'> {'qux', 'foo', 'bar', 'baz'}
print('f - ', type(f), f) #f - <class 'set'> {'foo', 42, 3.14159, (1, 2, 3)}
# 튜플 변환(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 - ', type(l), l) #l - <class 'list'> [1, 4, 5, 6]
print('l - ', l[0], l[1:3]) #l - 1 [4, 5]
print('l2 - ', type(l2), l2) #l2 - <class 'list'> ['qux', 'foo', 'bar', 'baz']
# 길이
print(len(a)) #0
print(len(b)) #4
print(len(c)) #4
print(len(d)) #5
print(len(e)) #4
# 집합 자료형 활용
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
#교집합
print('l - ', s1 & s2) #l - {4, 5, 6}
print('l - ', s1.intersection(s2)) #l - {4, 5, 6}
#합집합
print('l - ', s1 | s2) #l - {1, 2, 3, 4, 5, 6, 7, 8, 9}
print('l - ', s1.union(s2)) #l - {1, 2, 3, 4, 5, 6, 7, 8, 9}
#차집합
print('l - ', s1 - s2) #l - {1, 2, 3}
print('l - ', s1.difference(s2)) #l - {1, 2, 3}
# 중복 원소 확인
print('l - ', s1.isdisjoint(s2)) #l - False 교집합이 있으면 false, 없으면 true
# 부분 집합 확인
print('subset : ', s1.issubset(s2)) #subset : False s1이 s2의 부분집합이냐?
print('superset : ', s1.issuperset(s2)) #superset : False s1이 s2를 포함하는 집합이냐?
#s2 = set([4,5,6])이면 True다.
# 추가 & 제거
s1 = set([1, 2, 3, 4])
s1.add(5) #add메소드를 사용해 추가 가능
print('s1 - ', s1) #s1 - {1, 2, 3, 4, 5}
s1.remove(2) #remove메소드를 사용해 삭제 가능
print('s1 - ', s1) #s1 - {1, 3, 4, 5}
# s1.remove(7) 없는 원소를 삭제하려고 하면 keyError라는 에러(예외)가 발생한다.
s1.discard(3) #remove와 마찬가지로 삭제 기능.
print('s1 - ', s1) #s1 - {1, 4, 5}
#s1.discard(7) 없는 원소를 삭제하려고 해도 에러(예외)가 발생하지 않음
#소프트웨어에서 실수로 인해서 또 예기치 못한 값을 입력받음으로 인해서
어떤 에러가 발생하는걸 예외라는 표현을 한다.
# 모두 제거
s1.clear()
print('s1 - ', s1) #s1 - set() 리스트도 clear로 모두삭제가 가능하다.
'Python > Today I learned' 카테고리의 다른 글
| TIL#21 제어문 - 반복문(for문) (0) | 2021.05.15 |
|---|---|
| TIL#20 제어문 - 조건문(if문) (0) | 2021.05.15 |
| TIL#18 데이터타입(자료형)-딕셔너리형 (0) | 2021.05.14 |
| TIL#17 데이터타입(자료형)-튜플형 (0) | 2021.05.14 |
| TIL#16 데이터타입(자료형)-리스트형 (0) | 2021.05.14 |