인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
기초 자료형(집합)
- 기본 개념
집합 자료형은 순서가 없고 중복을 허용하지 않지만, 수정 및 삭제가 가능한 자료형이다.
또한, 집합 자료형은 딕셔너리와 형태가 유사하지만, 키 없이 벨류만으로 이루어져있다.
# 선언 방식 a = set() print(type(a)) # 결과 : <class 'set'> b = set([1, 2, 3, 4, 4, 4]) c = set([1, 2, 'pen', 'Cap', 'Plate']) d = {'abd', 'dwq', 'daf', 'ewe'} e = {42, 'abd', (1, 2, 3), 3.42411} # 집합의 선언 방식은 다양한데, ( )안에 리스트형식으로 데이터를 담아 선언할 수도 있고 # { }안에 키 없이 벨류만을 담아서 선언할 수도 있다. # 또한, 집합안에는 서로 다른 자료형을 함께 담을 수 있다. # 출력 방식 print('a - ', type(a), a) # 결과 : a - <class 'set'> set() print('b - ', type(b), b) # 결과 : b - <class 'set'> {1, 2, 3, 4} # 집합은 중복을 허용하지 않기 때문에, 중복된 데이터를 출력하지 않는다. # 여기서는 데이터 4가 중복되기 때문에, 4를 한 번만 출력한다. print('c - ', type(c), c) # 결과 : c - <class 'set'> {1, 2, 'pen', 'Plate', 'Cap'} print('d - ', type(d), d) # 결과 : d - <class 'set'> {'dwq', 'abd', 'ewe', 'daf'} print('e - ', type(e), e) # 결과 : e - <class 'set'> {42, 3.42411, 'abd', (1, 2, 3)} print('a - ', type(a), a, 2 in a) # 결과 : a - <class 'set'> set() False # in 연산자를 사용해서 집합 안에 특정 데이터가 존재하는지 여부를 알 수 있다. print('b - ', type(b), b, 2 in b) # 결과 : b - <class 'set'> {1, 2, 3, 4} True # in 연산자를 사용해서 집합 안에 특정 데이터가 존재하는지 여부를 알 수 있다. # 집합도 튜플, 리스트, 딕셔너리에서 사용가능한 기능은 모두 사용할 수 있다.
- 응용 개념
# 자료형 변환 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) # 이처럼 집합 자료형을 튜플 자료형으로 형 변환 할 수 있으며, # 형 변환 이후에는 슬라이싱 기능을 사용하여 특정 데이터만 잘라내어 출력할 수 있다. l = list(c) l2 = list(e) print('l - ', l) # 결과 : l - [1, 2, 'pen', 'Cap', 'Plate'] print('l2 - ', l2) # 결과 : l2 - ['abd', 3.42411, 42, (1, 2, 3)] # 이처럼 집합 자료형을 리스트 자료형으로 형 변환 할 수 있다. # 참고 예시 print(len(a)) # 결과 : 0 print(len(b)) # 결과 : 4 print(len(c)) # 결과 : 5 print(len(d)) # 결과 : 4 print(len(e)) # 결과 : 4 # 집합 자료형도 len( ) 함수를 사용하여 집합의 길이를 알 수 있다. # 집합 자료형의 활용 예시(합집합, 교집합, 차집합) 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} # &는 교집합을 의미하며, s1과 s2의 교집합을 집합 형태로 출력한다. print('s1 & s2 : ', s1.intersection(s2)) # 결과 : s1 & s2 : {4, 5, 6} # intersection( ) 함수를 사용하면, 두 집합의 교집합을 출력할 수 있다. print('s1 | s2 : ', s1 | s2) # 결과 : s1 | s2 : {1, 2, 3, 4, 5, 6, 7, 8, 9} # |는 합집합을 의미하며, s1과 s2의 합집합을 집합 형태로 출력한다. print('s1 | s2 : ', s1.union(s2)) # 결과 : s1 | s2 : {1, 2, 3, 4, 5, 6, 7, 8, 9} # union( ) 함수를 사용하면, 두 집합의 합집합을 출력할 수 있다. print('s1 - s2 : ', s1 - s2) # 결과 : s1 - s2 : {1, 2, 3} # -는 차집합을 의미하며, s1과 s2의 차집합을 집합 형태로 출력한다. print('s1 - s2 : ', s1.difference(s2)) # 결과 : s1 - s2 : {1, 2, 3} # difference( ) 함수를 사용하면, 두 집합의 차집합을 출력할 수 있다. # 집합의 함수 활용 예시 print('s1 & s2 : ', s1.isdisjoint(s2)) # 결과 : s1 & s2 : False # isdisjoint( ) 함수는 두 집합간의 교집합이 존재하는지 여부를 알려준다. # False가 결과 값으로 나오면 교집합이 존재한다는 의미이며, # True가 결과 값으로 나오면 교집합이 존재하지 않는다는 의미이다. print(s1.issubset(s2)) # 결과 : False print(s2.issubset(s1)) # 결과 : False # issubset( ) 함수는 어떤 집합이 다른 집합의 부분집합인지 여부를 알려준다. # True가 결과 값으로 나오면 부분집합이라는 의미이며, # False가 결과 값으로 나오면 부분집합이 아니라는 의미이다. print(s1.issuperset(s2)) # 결과 : False print(s2.issuperset(s1)) # 결과 : False # issuperset( ) 함수는 어떤 집합이 다른 집합을 포함하고 있는지 여부를 알려준다. # True가 결과 값으로 나오면 포함한다는 의미이며, # False가 결과 값으로 나오면 포함하지 않는다는 의미이다. s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6]) print('subset : ', s2.issubset(s1)) # 결과 : True print('superset : ', s1.issuperset(s2)) # 결과 : True # 위의 예시와 동일한 논리이다. # 집합의 테이터 삽입 & 제거 예시 s1 = set([1, 2, 3, 4]) s1.add(5) print('s1 - ', s1) # 결과 : s1 - {1, 2, 3, 4, 5} # add( ) 함수를 사용하면, 집합의 데이터를 삽입할 수 있다. s1.remove(2) print('s1 - ', s1) # 결과 : s1 - {1, 3, 4, 5} # remove( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있다. # 만약 집합에 존재하지 않는 데이터를 삭제할 경우에는 에러가 발생한다. s1.discard(3) print('s1 - ', s1) # 결과 : s1 - {1, 4, 5} # discard( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있다. s1.discard(8) print('s1 - ', s1) # 결과 : s1 - {1, 4, 5} # discard( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있으며 # 만약, 집합에 존재하지 않는 데이터를 삭제할 경우에도 에러가 발생하지 않는다. # 집합에 존재하지 않는 데이터를 삭제해도 결과 값에는 어떠한 변화도 발생하지 않으며, # 이러한 discard( ) 함수의 특징이 remove( ) 함수와의 차이점이다. s1.clear() print('s1 - ', s1) # 결과 : s1 - set() # clear( ) 함수는 집합의 모든 데이터를 지운다. # 참고로 리스트 자료형도 clear( ) 함수를 사용하여, 데이터를 모두 삭제할 수 있다.
'Python' 카테고리의 다른 글
Python - for문 (0) | 2021.10.14 |
---|---|
Python - if문 (0) | 2021.10.14 |
Python - 기초 자료형(딕셔너리) (0) | 2021.10.13 |
Python - 기초 자료형(튜플) (0) | 2021.10.13 |
Python - 기초 자료형(리스트) (0) | 2021.10.13 |
댓글