파이썬

집합(Set)

PGNV 2021. 5. 7. 11:47

집합(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