집합(Set)
집합(Set)은 말 그대로 집합입니다. 중복된 원소를 포함하지 않으며 순서가 보장되지 않습니다. 중복되는 원소가 있다면 지워버리는 특징을 가지고 있습니다.
선언은 2가지 방법으로 할 수 있습니다.
- {} : dict와 같지만 다른 선언 방법
- set()
set1 = {'가', '가', '나', '나', '다', '다', '다'}
print(set1)
#출력: {'나', '가', '다'}
추가
셋은 key도 없고 index도 없기에 어떤 원소를 직접적으로 추가하는 것은 어렵습니다.
추가는 2가지 방법으로 할 수 있습니다.
- add
- update
print(set1)
#출력: {'가', '다', '나'}
set1.add('라')
print(set1)
#출력: {'라', '가', '다', '나'}
print(set1)
#출력: {'라', '가', '다', '나'}
set1.update(['마', '바'])
print(set1)
#출력: {'가', '다', '마', '라', '나', '바'}
제거
제거는 2가지 방법으로 할 수 있습니다.
- remove : 에러 정보가 필요할 때 제거
- discard : 에러 정보 상관없이 제거
set1.remove('가')
print(set1)
#출력: {'다', '마', '라', '나', '바'}
set1.remove('가')
'''
KeyError Traceback (most recent call last)
<ipython-input-62-337b272364b1> in <module>()
----> 1 set1.remove('가')
KeyError: '가'
'''
set1.discard('나')
print(set1)
#출력: {'다', '라', '바', '마'}
set1.discard('나')
print(set1)
#출력: {'다', '마', '라', '바'}
#에러가 나오지 않음
set 메서드
set은 집합이기에 다음과 같은 method를 사용할 수 있습니다.
- union : 합집합
- difference : 차집합
- intersection : 교집합
- isdisjoint : 서로소 확인
- issubset : 부분집합 확인
- issuperset : 부분집합 확인 (부분집합의 역)
하지만 연산 속도 상 많이 사용할 일은 없기에 기능 정도만 기억하시면 됩니다.
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set3 = set1.union(set2) #합집합
print(set3)
#출력: {1, 2, 3, 4}
set4 = set1.intersection(set2) #교집합
print(set4)
#출력: {2, 3}
set5 = {1, 2}
set6 = {1, 2, 3, 4}
print(set5.issubset(set6))
#출력: True
animals = {'cat', 'dog'}
print ('cat' in animals) # 요소가 집합에 포함되어 있는지 확인; 출력 "True"
print ('fish' in animals) # 출력 "False"
animals.add('fish') # 요소를 집합에 추가
print ('fish' in animals) # 출력 "True"
print (len(animals)) # 집합에 포함된 요소의 수; 출력 "3"
print(animals) #출력 {'dog', 'fish', 'cat'}
animals.add('cat') # 이미 포함되어있는 요소를 추가할 경우 아무 변화 없음
print (len(animals)) # 출력 "3"
animals.remove('cat') # Remove an element from a set
print (len(animals)) # 출력 "2"
print(animals) #출력 {'dog', 'fish'}
반복문: 집합을 반복하는 구문은 리스트 반복 구문과 동일합니다.
그러나 집합은 순서가 없어서, 어떤 순서로 반복될지 추측할 순 없습니다
animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
print ('#%d: %s' % (idx + 1, animal))
# 출력 "#1: fish", "#2: dog", "#3: cat", 한 줄에 하나씩 출력.
'파이썬' 카테고리의 다른 글
import , import as, from import, from import * 의 차이 (0) | 2021.06.09 |
---|---|
스택(Stack) (0) | 2021.05.18 |
튜플 (Tuple) (0) | 2021.05.07 |
리스트 (list) (0) | 2021.05.07 |
딕셔너리(dictionary) (0) | 2021.05.07 |