본문 바로가기

💻프로그래밍/python

[파이썬 독학] 6. 세트(set)

반응형

1. 세트(set)

세트(set)는 집합의 특징을 파이썬의 자료구조로 만든 것으로, 리스트 같이 여러 개의 데이터를 집합의 형태로 넣을 수 있다.

세트(set) 자료형의 핵심은 요소들의 중복을 허용하지 않는다는 것이다. 또한 데이터들 간의 순서가 없기 때문에 리스트나 튜플 자료형처럼 인덱싱이나 슬라이싱을 이용하여 값을 추출해내는 방법을 사용할 수 없다. 이러한 세트(set) 자료형은 데이터를 다룰 때 유용하게 사용되는데, 예를 들어 각 집단 간의 중복되는 데이터만 추출하고 싶다거나, 전체에서 중복되는 경우의 데이터만 빼고 싶은 경우 , 중복된 데이터들을 하나씩만 남기고 정리하고 싶은 경우 등 여러 상황에서 필터 역할을 해준다.

 

 

 

2. 세트(set)의 선언 방법

세트(set)는 중괄호{ }로 표현되는데, 선언하는 방법은 크게 3가지가 있다.  

 

1) 빈 세트 만들기 :  set( ) 

아무 값이 들어있지 않은 빈 세트를 만들 때는 set( )를 이용하면 된다. 

 

 

 

2) set([ ]) 

 

 

다음으로는,  set([]) 를 이용하여 하나의 세트를 만들어보자. 먼저 하나의 리스트 [1,2,3]을 만든 다음, 리스트 전체를 set( )로 묶어 세트 형태로 만든다. 그 후 이 전체를 s1이라는 하나의 변수로 선언한 뒤 출력해보면 하나의 세트가 출력된다. 또한 여기서 type( )을 이용하여  s1의 타입을 확인해보면 set인 것을 알 수 있다.

 

 

 

※ 활용 : 리스트에 중복된 데이터의 중복을 제거하고 싶을 때

 

위의 예시를 보면 리스트 [1,1,1,1,2,3,4,4,4,4]에서 1과 4가 여러 번 중복된다. 이 중복되는 데이터들을 1개씩만 남기고 중복을 제거하고 싶을 때 우선 set( )안의 괄호에 해당 리스트를 넣어 중복을 제거한다. 그다음 그 세트를 list( )의 괄호 안에 넣어 다시 리스트(list)형태로 만들어주고 출력해보면 [1,2,3,4]로 중복이 제거되었음을 알 수 있다.

 

 

 

2) { } 

 

마지막으로 중괄호{ }를이용하여 바로 세트를 선언할 수도 있다. s1 = {1, 2, 3}을 선언한 뒤, type( )을 이용하여 s1의 타입을 확인해 봤을 때 set가 출력된다.

 

 

 

※주의사항

 

TypeError : 'set' object is not subscriptable

맨 처음 언급했듯, 세트(set)는 데이터들 간의 순서가 정해진 것이 아니기 때문에 리스트나 튜플과 같이 인덱싱, 슬라이싱의 개념을 사용할 수 없다. 따라서 위의 예시처럼 하나의 세트를 선언 한 뒤, s1[0]로 해당 세트의 0번째 값을 출력했을 때 에러가 뜨는 것을 알 수 있다.

 

 

 

 

3. 세트(set)의 연산 (교집합, 합집합, 차집합 구하기)

1) 교집합 :  A & B  /  A.intersection(B) 

 

 

다음과 같이 s1의 세트에는 1부터 10까지의 값을 넣고, s2는 그중 짝수의 값을 넣었다. 그 뒤 &를 이용하여 두 세트의 교집합을 구해보면 {2, 4, 6, 8, 10}이 출력됨을 알 수 있다. .intersection( ) 을 이용해도 동일한 결과가 출력된다.

 

 


2) 합집합 :  A | B /  A.union(B) 

 

 

합집합은 | (backslash : 키보드의 엔터 바로 위에 위치)을 사용하거나 .union( ) 을 이용하여 구할 수 있다. 

 

 

 

3) 차집합 :  A - B  /  A.difference(B)  

 

집합 A에서 집합 B의 원소를 제외한 나머지(차집합)를 구하기 위해서는 - 기호를 이용하거나 .difference( )를 이용하면 된다. 

 

 

 

4) 교집합을 뺀 나머지 : A ^ B 

 

집합 A와 집합 B의 교집합을 제외한 나머지를 구하고 싶다면  ^ 기호를 사용하면 된다.

 

 

 

 4. 세트(set)관련 함수

1) 값 1개 추가 : .add( ) 

 

세트에 1개의 값을 더 추가하고 싶다면 .add( ) 함수를 사용하여 괄호( )안에 추가하고 싶은 값을 적어주면 된다.

 

 

 

2) 값 여러개 추가 : .update( ) 

 

1개가 아닌 여러개의 값을 한번에 추가하고 싶다면, .update( ) 함수의 괄호 안에 [  ]를 이용하여 값들을 묶어서 넣어주면된다. 

 

 

 

3) 특정 값 제거 : .remove( )  

세트의 특정 값을 제거하고 싶다면 .remove( )함수를 이용하여 괄호 안에 제거하고 싶은 값을 적어주면 된다.

반응형