..

Search

15) 세트 타입

세트 타입


세트(set)

파이썬의 세트는 우리가 수학에서 자주 접한 개념인 집합과 같은 개념으로, 하나의 포대 안에 모든 데이터를 몰아서 저장하는 것으로 쉽게 이해해 볼 수 있습니다. 따라서 세트 타입에서는 각 요소들의 순서를 매길 수 없으며, 중복된 값 또한 허용하지 않습니다.

 

세트는 중괄호({})로 감싸서 선언하며, 세트 안의 요소(element)들은 쉼표(,)로 구분합니다.

또한, 파이썬 내장 함수인 set() 함수를 사용하면 문자열과 같이 순환할 수 있는 객체(iterable object)를 세트로 변환할 수 있습니다.

 

파이썬에서 순환할 수 있는 객체(iterable object)란 저장된 요소를 하나씩 차례대로 반환할 수 있는 객체를 의미하며, 대표적으로 리스트, 튜플, 문자열 등이 있습니다.

 

문법

세트명 = {요소1, 요소2, 요소3, ...}

 

예제

set1 = {1, 2, 3}

set2 = set("Python")

set3 = set("Hello")  

 

print(set1)

print(set2)

print(set3)

코딩연습 ▶

실행 결과

{1, 2, 3}
{'P', 'y', 'h', 'n', 'o', 't'}
{'l', 'e', 'o', 'H'}

 

위의 예제의 출력 결과는 실행결과 버튼을 누를 때마다 다르게 변할 것입니다. 이것은 파이썬의 세트가 요소들 사이의 순서는 신경 쓰지 않기 때문입니다.

 

또한, 7번 라인에서 ‘Hello' 문자열에 포함된 두 개의 'l'문자 중 하나만이 세트의 요소로 포함된 것처럼 파이썬에서 순환할 수 있는 객체를 세트로 변환할 때는 자동으로 중복된 값이 제거됩니다.


빈 세트(empty set)

아무런 요소도 저장하고 있지 않은 집합을 빈 세트(empty set)라고 합니다.

파이썬에서는 빈 세트를 나타낼 때 리스트나 튜플처럼 단순히 중괄호({})만을 사용해서는 안 됩니다. 만약 빈 세트를 나타내기 위해 중괄호({})만을 사용하게 되면, 파이썬 프로그램은 이를 빈 세트가 아닌 빈 딕셔너리로 잘못 인식할 것입니다.

 

따라서 파이썬에서 빈 세트는 중괄호가 아닌 set() 함수를 통해서만 선언할 수 있습니다.

예제

set1 = {}

set2 = set()  

 

print(type(set1))

print(type(set2))

실행 결과

<class 'dict'>
<class 'set'>

 

파이썬 내장 함수인 type() 함수는 인수로 전달받은 객체의 데이터 타입을 반환하는 함수입니다. 따라서 단순히 중괄호({})만을 사용하여 선언할 경우에는 딕셔너리 타입으로 선언됨을 확인할 수 있습니다.


세트에 요소 추가하거나 제거하기

add() 함수는 전달된 인수를 해당 세트의 요소로 추가하고, remove() 함수는 해당 세트에서 전달된 인수를 찾아 제거합니다.

 

여러 개의 요소를 한 번에 추가하려면 update() 함수를 사용하면 되며, 이때 인수로는 순환할 수 있는 객체(iterable object) 타입만을 전달할 수 있습니다.

예제

set1 = {1, 2, 3}  

 

set1.add(4)

print(set1)  

 

set1.update((5, 6))

print(set1)  

 

set1.remove(2)

print(set1)  

코딩연습 ▶

실행 결과

{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6}
{1, 3, 4, 5, 6}


집합 연산

파이썬의 세트 타입은 수학에서 다루는 집합과 매우 비슷하게 동작합니다. 따라서 파이썬에서는 합집합, 교집합, 차집합, 여집합 등 다양한 집합 연산을 세트 타입을 활용하여 매우 손쉽게 구현할 수 있습니다.

예제

set1 = {1, 2, 3, 4, 5}

set2 = set((1, 3, 5, 7, 9))  

 

print(set1)

print(set2)  

 

print(set1 | set2) # 합집합

print(set1 & set2) # 교집합

print(set1 - set2) # 차집합

print(set1 ^ set2) # 여집합 = 합집합 - 교집합

코딩연습 ▶

실행 결과

{1, 2, 3, 4, 5}
{1, 3, 5, 7, 9}
{1, 2, 3, 4, 5, 7, 9}
{1, 3, 5}
{2, 4}
{2, 4, 7, 9}

 

위 예제의 1번과 2번 라인처럼 파이썬에서 세트 타입의 데이터는 중괄호를 사용하거나 set() 함수를 사용해서 선언할 수 있습니다. 이때 set() 함수의 인수로는 순환할 수 있는 객체(iterable object)만을 사용할 수 있습니다.


연습문제