이번 포스팅에서는 쉽게하는 Python 자료형에 대해 알아보는 네번째 포스팅입니다. 이번에는 세트 자료형에 대해 알아보도록 할께요.
세트 자료형
세트(Set) 자료형은 집합을 표현하는 자료형입니다. 이 자료형을 이용해서 합집합, 차집합, 교집합 등을 표현하고 계산할 수 있습니다.
세트 자료형은 순서가 존재하지 않고 중복값을 넣을 수가 없다는 특징이 있습니다.
세트 자료형 문법
{set1, set2, set3...}
또는
set()
세트 자료형 문법은 숫자, 문자 등을 중괄호({ ... })로 감싸고 콤마(,)로 데이터를 구분하고 표현할 수 있습니다.
세트에서 요소를 추가, 삭제하는 방법을 알아보고 세트에서 구할 수 있는 합집합, 차집합, 교집합을 구해보도록 할께요.
세트 데이터 한개 추가
세트에 데이터를 한개 추가할 경우 사용합니다.
세트 데이터 한개 추가 문법
set변수.add(추가되는 값)
세트에 데이터를 추가하는 예제를 한번 살펴보겠습니다.
>>> fruits = set()
>>> fruits.add('banana')
>>> fruits.add('strawberry')
>>> print(fruits)
{'banana', 'strawberry'}
세트 데이터 여러개 추가
기존 세트에 데이터를 여러개 추가할 경우 사용합니다.
세트 데이터 여러개 추가 문법
set변수.update((추가값1, 추가값2...))
세트에 데이터를 여러개 추가하는 예제를 한번 살펴보겠습니다.
>>> brand.update(('newbalance', 'nike'))
>>> print(brand)
{'levis', 'nike', 'daks', 'newbalance'}
세트 데이터 한개 삭제
세트에 데이터를 한개 삭제할 경우 사용합니다.
세트 데이터 한개 삭제 문법
set변수.remove(삭제할 값)
또는
set변수.discard(삭제할 값)
세트에 데이터를 한개 삭제하는 예제를 한번 살펴보겠습니다.
>>> brand.remove('nike')
>>> print(brand)
{'levis', 'daks', 'newbalance'}
remove와 discard의 차이는 무엇일까요? remove는 삭제할 요소가 없을 경우 에러메시지가 발생하고, discard는 삭제할 요소가 없어도 에러메시지가 발생하지 않습니다. 아래 예제에서는 daks요소를 삭제하고, discard로 삭제를 했을 때는 오류가 발생하지 않지만, remove로 다시 삭제했을 때 오류가 발생하는 것을 볼 수 있습니다.
>>> brand.discard('daks')
>>> print(brand)
{'levis', 'newbalance'}
>>> brand.discard('daks')
>>> print(brand)
{'levis', 'newbalance'}
>>> brand.remove('daks')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'daks'
합집합 구하기
합집합은 집합 A의 원소 집합 B의 원소를 전부 나타내는 집합입니다.
전자기기 원소에는 전자기기인 TV, PC, CellPhone이라는 데이터가 있고, 휴대용품 원소에는 Wallet, CellPhone, Pen의 데이터가 있습니다.
여기서 중복되는 데이터는 CellPhone입니다. 이것을 합집합으로 표현해보겠습니다.
합집합 문법
A | B
또는
set 변수.union(A, B)
전자기기와 휴대용품을 집합으로 각각 선언하고, 이들의 합집합을 코드로 표현해보겠습니다.
>>> electronics = {'TV', 'CellPhone', 'PC'}
>>> portable = {'Wallet', 'CellPhone', 'Pen'}
>>> electronics | portable
{'TV', 'Wallet', 'CellPhone', 'PC', 'Pen'}
차집합 구하기
차집합은 하나의 집합에는 포함되고, 다른 집합에는 포함되지 않는 모든 원소의 집합을 말합니다.
왼쪽의 집합이 기준 집합이 되고, 오른쪽에 선언하는 집합이 제외되는 집합이 됩니다.
여기서 제외되는 원소는 CellPhone, Wallet, Pen입니다. 이것을 차집합으로 표현해보겠습니다.
차집합 문법
A - B
또는
set 변수.difference(A, B)
전자기기와 휴대용품의 차집합을 코드로 표현해보겠습니다.
>>> electronics - portable
{'TV', 'PC'}
차집합의 순서를 바꾸어보겠습니다. 여기서 제외되는 원소는 TV, CellPhone, PC입니다. 코드로 표현해보겠습니다.
>>> portable - electronics
{'Wallet', 'Pen'}
* 기준 집합이 어떤 것이 되느냐에 따라 데이터가 달라질 수 있으니 사용할 때 주의해주세요.
교집합 구하기
교집합은 집합 A와 집합 B의 원소에 공통적으로 존재하는 원소를 의미합니다.
교집합의 데이터는 CellPhone입니다. 이것을 교집합으로 표현해보겠습니다.
교집합 문법
A & B
또는
set 변수.intersection(A, B)
전자기기와 휴대용품의 교집합을 코드로 표현해보겠습니다.
>>> electronics & portable
{'CellPhone'}
Advanced Question
Question. 빈 집합을 선언했을 때 딕셔너리 형태로 표현되는데 어떻게 해야할까요?
>>> list = {}
>>> print(type(list))
<class 'dict'>
Answer. 이럴 때 직접적으로 set를 선언해주세요.
>>> list = set()
>>> print(type(list))
<class 'set'>
여기까지 파이썬의 세트 자료형을 살펴보았습니다.
여기까지 포스팅을 읽어주시고 따라해주신 것 감사합니다.
댓글