반응형
[1] 집합(set) 특징
집합(set)은 중괄호로 표기하는 자료형식으로
매번 강조하는 여러 자료형의 특징을 비교해보면
구분 | 튜플(tuple) | 리스트(list) | 집합(set) | 딕셔너리(dictionary) |
공통사항 | 1개 이상의 데이터(값)을 관리(저장)할 때 사용 | |||
형태 | 소괄호 - ( ) | 대괄호 - [ ] | 중괄호 + 콤마 - { , } | 중괄호 - { Key : Value} |
순서(index) | O | O | X | X |
중복허용 | O | O | X (Value) | X (Key) |
수정 가능 | X | O | O | O |
집합(set)은 순서가 없고 중복 값을 허용하지 않으며, 수정이 가능한 자료유형이다.
튜플, 리스트와 비교시 중복이 없다는 점이 가장 큰 차이인데,
이러한 특징을 이용해 중복을 제거하기 위한 용도로 사용이 되며,
다른 자료형 대비 2개의 집합(set)간의 요소 비교(합집합, 차집합, 교집합 등)의 사용이 용이하다.
1. 집합(set) 만들기(선언)
- 집합은 중괄호 '{ }'를 이용하여 만들며, 여러가지 요소(자료 유형에 구분 없이)를 추가할 수 있다.
set1 = {1,2,3}
print(type(set1)) # 결과 값 set
set2 = {4,5,} # 마지막에 콤마가 있어도 무관
print(type(set2)) # 결과 값 set
dict1 = {} # 빈 값으로 입력 시 dictionary type
print(type(dict1)) # 결과 값 dict
set3 = set()
print(type(set3)) # 결과 값 set
set4 = set([7,8,9]) # 리스트 형태에서 set 으로 자료 입력
print(type(set4)) # 결과 값 set
2. 인덱싱과 슬라이싱
- 집합(set)의 경우, 반복적으로 출력을 해보면 결과가 계속 달라지는데,요소 값들의 순서(인덱스)가 없기 때문이다.
위의 사유로 인덱싱과 슬라이싱은 불가하다.
(인덱싱, 슬라이싱을 사용하기 위해서는 튜플이나 리스트의 형태로 자료유형의 변환이 필요하다.)
set1 = {1, 2, 3}
list1 = list(set1) # 리스트로 변환
print(list1[1]) # 리스트 변환 후, 인덱싱
3. 집합(set)의 요소 수정(추가, 삭제)
- 집합은 순서가 없기 때문에 인덱싱을 이용한 추가는 불가하며, 요소 값을 통한 추가, 삭제를 할 수 있다.
set1 = {1, 2, 3}
set1.add(5) # 5 추가
set1.add(7) # 7 추가
print(set1)
- 여러개의 값을 추가할 때 아래에서 배울 합집합의 형태로 추가도 가능하며, update 로도 추가 가능하다.
set1 = {1, 2, 3, 5, 7}
set1.update({5,6,7,8}) # update 를 이용한 추가1
print(set1) # set1.update({5,6,7,8}) 결과 확인
set1.update(set([8,9,10]))# update 를 이용한 추가2
print(set1) # set1.update(set([8,9,10])) 결과 확인
- remove 를 통해 해당 값을 제거할 수 있다.
set1 = {1,2,3,4,5}
set1.remove(3)
print(set1)
4. 합집합, 교집합, 차집합
- 집합은 각 요소간의 중복 관계를 통해 합집합, 교집합, 차집합으로 나타낼 수 있는데
각 연산자를 통해 해당 요소 값을 확인 할 수 있다.
- 합집합을 나타내는 '|' 는 둘 중 하나만 만족해도 되는 or을 나타내며
교집합을 나타내는 '&'는 둘다 만족하는 and를 나타낸다.
set1 = {1,2,3,4,5}
set2 = {1,3,5,7,9}
set3 = set1 | set2 # 합집합
print(set3)
set4 = set1 - set2 # 차집합
print(set4)
set5 = set1 & set2 # 교집합
print(set5)
반응형
'Python' 카테고리의 다른 글
12. 파이썬 조건문(if) (0) | 2023.06.30 |
---|---|
11. 딕셔너리(dictionary) 특징 (0) | 2023.06.29 |
09. 파이썬 리스트(list) 특징 (0) | 2023.06.26 |
08. 파이썬 튜플(tuple) 특징 (0) | 2023.06.25 |
07 파이썬 Boolen(참,거짓) (0) | 2023.06.24 |