Python 자료형-집합

배추·2025년 11월 9일

🐍 Python

목록 보기
5/19

Python의 집합 자료형에 대해 알아봅니다.


▶︎집합

  • 집합(set)은 수학의 집합 개념과 동일한 자료형.
  • 중복을 허용하지 않고 순서가 없는 데이터들의 모임으로, 교집합, 합집합, 차집합 등의 집합 연산을 쉽게 처리할 수 있다.

🌟집합 자료형 생성

  • set 키워드를 사용.
    • set()의 괄호 안에 리스트를 입력하여 만들거나 다음과 같이 문자열을 입력하여 만들 수도 있다.
  s1 = set([1, 2, 3])
  s1 # {1, 2, 3}

  s2 = set("Hello")
  s2 # {'e', 'H', 'l', 'o'}
  • 중괄호({})를 사용해서 집합 자료형을 직접 만들 수도 있다.
s3 = {1, 2, 3}
s3 # {1, 2, 3}

s4 = {'a', 'b', 'c'}
s4 # {'a', 'c', 'b'}
  • 비어 있는 집합 자료형은 s = set()로 만들 수 있다.
    • s = {}로 만들면 딕셔너리가 되므로 주의.

🌟집합 자료형 특징

  1. 중복을 허용하지 않는다.
  2. 순서가 없다(Unordered).
  • 집합은 중복을 허용하지 않는 특징 때문에 데이터의 중복을 제거하기 위한 필터로 종종 사용된다.
  • 리스트나 튜플은 순서가 있기(ordered) 때문에 인덱싱을 통해 요솟값을 얻을 수있지만, 집합 자료형은 순서가 없기(unordered) 때문에 인덱싱을 통해 요솟값을 얻을 수 없다.
  • 만약 집합 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한 후에 해야 한다.
s1 = set([1, 2, 3])

# 리스트
l1 = list(s1)
l1 # [1, 2, 3]
l1[0] # 1

# 튜플
t1 = tuple(s1)
t1 # (1, 2, 3)
t1[0] # 1

🌟교집합, 합집합, 차집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

교집합 &

  • ‘&’를 이용.
    s1 & s2 # {4, 5, 6}
  • intersection 함수를 사용.
    s1.intersection(s2) # {4, 5, 6}

합집합 |

  • ‘|’를 사용.
  s1 | s2 # {1, 2, 3, 4, 5, 6, 7, 8, 9}
  • union 함수를 사용.
  s1.union(s2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}

차집합 -

  • -(빼기) 사용.
  s1 - s2 # {1, 2, 3}
  s2 - s1 # {8, 9, 7}
  • difference 함수를 사용.
  s1.difference(s2) # {1, 2, 3}
  s2.difference(s1) # {8, 9, 7}

🌟집합 자료형 관련 함수

📍add

  • 값 1개 추가.
  • 이미 만들어진 집합에 값을 추가.
s1 = set([1, 2, 3])
s1.add(4)
s1 # {1, 2, 3, 4}

📍update

  • 값 여러 개 추가.
  • 여러 개의 값을 한꺼번에 추가.
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
s1 # {1, 2, 3, 4, 5, 6}

📍remove

  • 특정 값 제거.
s1 = set([1, 2, 3])
s1.remove(2)
s1 # {1, 3}

📍discard

  • 특정 값 제거.
  • remove와 비슷하지만 존재하지 않는 값을 제거하려 할 때 오류가 발생하지 않는다.
s1 = set([1, 2, 3])

s1.discard(2)
s1 # {1, 3}

s1.discard(4)  
s1 # {1, 3} # 없는 값이어도 오류가 발생하지 않음

📍clear

  • 집합의 모든 값을 제거.
s1 = set([1, 2, 3])
s1.clear()
s1 # set()
profile
난 🥬

0개의 댓글