언어/Python

[Python] 집합 자료형 다루기

SeongOnion 2021. 8. 4. 23:20
728x90

파이썬은 집합(고등수학에서 배우는 그 집합)을 처리하기 위한 자료형 set을 제공한다.

 

집합 자료형은 set()으로 선언하며, 안에 들어갈 원소들을 리스트 형태로 넘겨주면 된다.

data = set([1, 4, 9, 11, 3])
print(data)
# {1, 3, 4, 9, 11}

 

집합 자료형의 특징은 크게 두 가지가 있다.

  • 중복값을 허용하지 않는다.
  • 원소들 간 순서가 정해져있지 않다. 

중복값을 허용하지 않기 때문에 동일한 값의 원소를 여러 개 넣더라도 집합 안에는 하나의 원소만 남게된다.

data = set([1, 4, 4, 4, 9, 11, 3])
print(data)
# {1, 3, 4, 9, 11}

 

순서를 갖지 않기 때문에 리스트처럼 인덱싱하는 것이 불가하다.

data = set([1, 4, 9, 11, 3])
print(data[0])
# TypeError: 'set' object is not subscriptable

 

집합 자료형의 연산

고등학교 때 배웠던 기억을 떠올려보자.

 

두 개 이상의 집합을 연산할 때 합집합, 차집합, 교집합이라는 개념이 있었다.

 

파이썬의 집합 자료형 역시 이러한 연산을 지원한다.

set_a = set([1, 3, 4, 9, 13])
set_b = set([3, 7, 9, 11])

print(set_a | set_b) # 합집합
print(set_a - set_b) # 차집합
print(set_a & set_b) # 교집합

# {1, 3, 4, 7, 9, 11, 13}
# {1, 4, 13}
# {9, 3}

 

집합 자료형에 값 추가, 제거

리스트와 마찬가지로 집합에 값을 추가하거나 삭제하는 연산 또한 지원한다.

 

값 추가

set_a = set([1, 3, 4, 9, 13])
set_a.add(99)

print(set_a)
# {1, 3, 4, 99, 9, 13}

 

여러 개 값 추가

set_a = set([1, 3, 4, 9, 13])
set_a.update([100, 101]) # 추가할 값들은 리스트 형태로 삽입해준다.

print(set_a)
# {1, 3, 4, 100, 101, 9, 13}

 

값 제거

set_a = set([1, 3, 4, 9, 13])
set_a.remove(13)

print(set_a)
# {1, 3, 4, 9}