본문 바로가기

Language/Python

[Python] 중복을 피할 때 사용할 수 있는 set(집합) 함수

set( ) 이란?

  • set은 수학에서의 집합과 비슷하다.
  • 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형
  • 순서가 없고, 집합에서 unique한 값을 가진다.
  • mutable 객체

Python에서의 집합은 고유한 요소의 모음이다. 집합의 목적은 단일 변수에 여러 항목을 저장하는 것이다.

중괄호를 사용하는 것은 dictionary와 비슷하지만 key가 없고 갑(value)만 존재한다.

>>> s = {3, 5, 7}
>>> s
{3, 5, 7}
>>> type(s)
<class 'set'>

집합 자료형은 아래와 같이 set 키워드를 사용해 만들 수 있다.

s1 = set([1,2,3])
print(s1)

# result : {1,2,3}

set( ) 괄호 안에 리스트를 입력하여 만들 수 있고, 문자열을 입력해 만들 수도 있다.

s2 = set("hello")
print(s2)

# result : {'o', 'h', 'l', 'e'}
s = set("331")

print(s)

# result : {'1', '3'}

 

set( ) 특징

  • 중복 허용 X (중복을 없애준다)
  • 순서 X

리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만, set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.

만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트 or 튜플로 변환한 후 해야 한다.

s1 = set([1,2,3])

l1 = list(s1)
print(l1)		# result : [1,2,3]
print(l1[0])		# result : 1

t1 = tuple(s1)
print(t1)		# result : (1,2,3)
print(t1[0])		# result : 1

 

SET 함수 명령어

  • 추가 : add( )
  • 여러개의 값 추가 : update( )
  • set 안의 값 제거 1 : remove -- set 집합 안에 원소가 없는 경우 KeyError 발생
  • set 안의 값 제거 2 : discard -- set 집합 안에 원소가 없는 경우에도 KeyError 발생 X

 

  • 집합의 요소 수 찾기 : len( )
  • 집합의 모든 요소 제거 : clear( )

 

합집합, 교집합, 차집합

교집합, 합집합, 차집합을 구할 때 set 자료형이 유용하게 쓰인다.

1. 합집합

두 집합의 모든 요소를 포함

union( ) 또는 | 연산자 사용

setA = {1,2,3,4,5}
setB = {4,5,6,7,8}

setC = setA.union(setB)
# setC = setA | setB

print(setC)

# result : {1, 2, 3, 4, 5, 6, 7, 8}

2. 교집합

두 집합의 공통인 요소만 포함

intersection( ) 또는 & 연산자 사용

setA = {1,2,3,4,5}
setB = {4,5,6,7,8}

setD = setA.intersection(setB)
# setD = setA & setB

print(setD)

# result : {4, 5}

3. 차집합

한 집합에는 있지만 다른 집합에는 없는 요소 포함

difference( ) 메소드 또는 - 연산자 사용

이전 합집합과 교집합과는 다르게 연산의 순서가 존재한다.

setA = {1,2,3,4,5}
setB = {4,5,6,7,8}

setE = setA.difference(setB)
setF = setB - setA

print(setE)
print(setF)

# result(setE) : {1, 2, 3}
# result(setF) : {8, 6, 7}

4. 대칭 차집합

공통된 요소만 제외하고 모든 요소를 포함하는 집합

symmetric_difference( ) 메소드 또는 ^ 연산자 사용

setA = {1,2,3,4,5}
setB = {4,5,6,7,8}

setG = setA.symmetric_difference(setB)
# setG = setA^setB

print(setG)

# result : {1, 2, 3, 6, 7, 8}

 

REFERENCE

https://wikidocs.net/16044

 

18. set(집합)

## 1. set(집합) - set은 수학에서 이야기하는 집합과 비슷합니다. - 순서가 없고, 집합안에서는 unique한 값을 가집니다. - 그리고 mutable 객체입니다.…

wikidocs.net

https://velog.io/@insutance/Python-set-%EC%9D%B4%EB%9E%80

 

[Python] set() 이란

python 'set( ) 함수' 정리

velog.io

https://aigong.tistory.com/30

 

Python 내장 함수 : set 함수 사용하기 - 아이공

Python 내장 함수 : set 함수 사용하기 - 아이공 설명에 앞서 정제된 표현이 되어있는 아래 2개의 사이트를 방문하시는 것을 추천드립니다. 특히 1번이 아주 자세히 설명되어 있습니다. 최대한 친절

aigong.tistory.com