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가 출력된다.
※주의사항
맨 처음 언급했듯, 세트(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( )함수를 이용하여 괄호 안에 제거하고 싶은 값을 적어주면 된다.
'💻프로그래밍 > python' 카테고리의 다른 글
[파이썬 독학] 8. 조건문 (if문 예제) (0) | 2021.01.18 |
---|---|
[파이썬 독학] 7. 불(boolean) (0) | 2021.01.16 |
[파이썬 독학] 5. 딕셔너리(dictionary) (0) | 2021.01.14 |
[파이썬 독학] 4. 튜플(tuple)과 리스트(list)비교 (1) | 2021.01.13 |
[파이썬 독학] 3. 리스트(list) (0) | 2021.01.12 |