본문 바로가기
파이썬기초(Python Basic)

파이썬 세트(set) 자료형 사용법

by 친절한에릭 2023. 4. 30.

데이터 처리의 세계에서 파이썬은 어떻게 하면 더 효율적이고 빠르게 작업을 수행할 수 있을지 항상 고민해야 하는 주제입니다. 이러한 고민을 덜어주는 강력한 도구 중 하나가 바로 set 자료형입니다. 하지만 이 set 자료형은 파이썬 사용자들 사이에서 상대적으로 덜 알려져 있어 그 진가를 제대로 발휘하지 못하고 있는 경우가 많습니다. 이 글에서는 파이썬 set 자료형의 기본 개념부터 활용 방법까지 설명했습니다.세트 자료형을 활용하여 데이터 처리의 효율성을 높이는데 도움이 되었으면 합니다.

파이썬 세트(set )자료형 소개

set 자료형의 정의

파이썬에서 set 자료형은 중복을 허용하지 않고, 순서가 없는 집합 자료형입니다. 집합의 개념을 이해하면 이 자료형의 특성을 쉽게 이해할 수 있습니다.

set 자료형의 특징

set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없습니다. 하지만 집합 연산을 사용하여 원소들을 처리할 수 있습니다. set 자료형의 중복된 값을 허용하지 않는 특성으로 인해, 데이터 처리에 유용합니다.

파이썬 set 자료형 생성하기

set 생성 방법

set 자료형은 중괄호 {}를 사용하여 생성할 수 있습니다. 예를 들어, s = {1, 2, 3}처럼 작성하면 됩니다. 또한 set() 함수를 이용해서도 생성할 수 있습니다.

s = {1, 2, 3}
s2 = set([1, 2, 3])

빈 set 생성하기

빈 set을 생성하려면 set() 함수를 사용해야 합니다. 중괄호 {}로는 빈 set을 생성할 수 없습니다.

empty_set = set()

파이썬 set 자료형 사용법

원소 추가하기

add() 메서드를 사용하여 set에 원소를 추가할 수 있습니다. 예를 들어, s.add(4) 와 같이 사용하면 원소 4를집합 s에 추가할 수 있습니다.

s = {1, 2, 3}
s.add(4)
print(s)  # 결과: {1, 2, 3, 4}

원소 삭제하기

remove() 메서드를 사용하여 set의 원소를 삭제할 수 있습니다. 삭제하려는 원소가 없을 경우 KeyError가 발생합니다. 이를 방지하려면 discard() 메서드를 사용하세요.

s = {1, 2, 3}
s.remove(3)
print(s)  # 결과: {1, 2}

s.discard(3)
print(s)  # 결과: {1, 2}

원소 검색하기

in 키워드를 사용하여 특정 원소가 set에 포함되어 있는지 확인할 수 있습니다.

s = {1, 2, 3}
print(1 in s)  # 결과: True
print(4 in s)  # 결과: False

원소 업데이트하기

update() 메서드를 사용하여 한 번에 여러 원소를 set에 추가할 수 있습니다. 인수로는 리스트, 튜플, 문자열, 또 다른 set 등을 사용할 수 있습니다.

s = {1, 2, 3}
s.update([4, 5, 6])
print(s)  # 결과: {1, 2, 3, 4, 5, 6}

set 자료형의 연산

합집합

union() 메서드나 | 연산자를 사용하여 두 set의 합집합을 구할 수 있습니다.

s1 = {1, 2, 3}
s2 = {3, 4, 5}

print(s1.union(s2))  # 결과: {1, 2, 3, 4, 5}
print(s1 | s2)       # 결과: {1, 2, 3, 4, 5}

교집합

intersection() 메서드나 & 연산자를 사용하여 두 set의 교집합을 구할 수 있습니다.

s1 = {1, 2, 3}
s2 = {3, 4, 5}

print(s1.intersection(s2))  # 결과: {3}
print(s1 & s2)              # 결과: {3}

차집합

difference() 메서드나 - 연산자를 사용하여 두 set의 차집합을 구할 수 있습니다.

s1 = {1, 2, 3}
s2 = {3, 4, 5}

print(s1.difference(s2))  # 결과: {1, 2}
print(s1 - s2)            # 결과: {1, 2}

대칭 차집합

symmetric_difference() 메서드나 ^ 연산자를 사용하여 두 set의 대칭 차집합을 구할 수 있습니다.

s1 = {1, 2, 3}
s2 = {3, 4, 5}

print(s1.symmetric_difference(s2))  # 결과: {1, 2, 4, 5}
print(s1 ^ s2)                       # 결과: {1, 2, 4, 5}

set 자료형의 활용

중복 제거

set 자료형은 중복을 허용하지 않기 때문에 리스트나 튜플에서 중복된 원소를 제거하는데 사용할 수 있습니다.

lst = [1, 1, 2, 2, 3, 3, 4, 4]
unique_lst = list(set(lst))
print(unique_lst)  # 결과: [1, 2, 3, 4]

데이터 처리

set 자료형을 사용하여 여러 데이터 처리 작업을 수행할 수 있습니다. 예를 들어, 두 데이터 집합 간의 관계를 찾거나 두 데이터 집합에서 공통된 원소를 찾는 등의 작업을 수행할 수 있습니다.

마무리

파이썬 set 자료형은 중복을 허용하지 않고 순서가 없는 집합 자료형입니다. 이로 인해 데이터 처리에 유용하게 사용할 수 있으며, 집합 연산을 통해 다양한 작업을 수행할 수 있습니다. 이 글에서는 set 자료형의 생성, 사용법, 연산 및 활용에 대해 알아보았습니다.

자주 묻는 질문

  1. Q: set 자료형의 원소로 리스트나 딕셔너리를 사용할 수 있나요? A: 아니요, set의 원소는 변경 불가능한 자료형만 가능합니다. 리스트와 딕셔너리는 변경 가능한 자료형이기 때문에 사용할 수 없습니다.
  2. Q: set 자료형과 frozenset 자료형의 차이점은 무엇인가요? A: set 자료형은 변경 가능한 자료형인 반면, frozenset 자료형은 변경 불가능한 자료형입니다. 따라서 frozenset은 set의 원소로 사용할 수 있습니다.
  3. Q: 파이썬에서 집합 연산을 수행하는 다른 방법은 없나요? A: 파이썬의 set 자료형 메서드 외에도 functoolsitertools 라이브러리를 사용하여 집합 연산을 수행할 수 있습니다.
  4. Q: set 자료형에 인덱싱을 사용하려면 어떻게 해야 하나요? A: set 자료형에는 순서가 없기 때문에 인덱싱을 사용할 수 없습니다. 인덱싱이 필요한 경우 set을 리스트나 튜플로 변환하여 사용하면 됩니다.
  5. Q: set 자료형의 성능 특성은 어떤가요? A: set 자료형은 해시 테이블을 사용하여 원소를 저장하기 때문에 원소의 검색, 추가 및 삭제 작업이 상수 시간에 가능합니다. 따라서 큰 데이터 집합에서도 높은 성능을 보장합니다.

 

파이썬 세트 자료형

 

댓글