본문 바로가기
카테고리 없음

[Python] 자료구조 - 세트(set)

by 박사과정 모닝 2023. 10. 30.
반응형

세트(set)

  1. 파이썬에서의 세트는 우리가 중/고등학생 때 배웠던 '집합'과 같은 개념입니다.
  2. 세트는 중복을 허용하지 않습니다.
    • 만약 중복된 요소를 입력하면, 세트는 자동으로 중복된 요소를 제거합니다. 
  3. 세트의 항목 간에는 순서가 없습니다.
    • 따라서 세트는 인덱싱이나 슬라이싱과 같은 시퀀스의 함수를 사용할 수 없습니다.
    • 대신 in 연산자를 활용해 어떠한 항목이 세트에 원소로 존재하는지 검사할 수 있습니다.
    • 또한 입력한 데이터의 순서와, for 반복문을 이용해 세트의 각 항목에 접근하는 순서가 다를 수 있습니다.
    • 세트는 모든 요소들을 해싱(hashing)을 사용해 저장하고 관리합니다.
      • hashing: 각 개체에 식별할 수 있는 코드를 부여하여 객체를 테이블에 저장하는 것
    • 해쉬 코드는 변경되면 안 됩니다. 만약 변경 가능한 리스트를 포함하게 되면 이 해쉬 코드가 변경될 가능성이 있습니다. 따라서 세트는 리스트를 원소로 포함할 수 없습니다.
  4. 세트는 중괄호 기호{}로 감싸 생성할 수 있습니다.
  5. 세트도 리스트, 튜플과 마찬가지로 세트 안에 여러 자료형을 섞을 수 있지만, 리스트는 포함할 수 없습니다.
  6. 만약 비어 있는 세트를 생성하려면 set() 함수를 사용해야 합니다.

세트 요소 추가 및 삭제

세트는 변경 가능한 객체이지만, 인덱스가 없기 때문에 인덱싱이나 슬라이싱 연산은 의미가 없습니다. 따라서 요소를 추가하거나 삭제하려면 아래와 같은 함수들을 사용해야 합니다.

  • add(): 요소 하나 추가
  • update(): 요소 여러개를 한꺼번에 추가. 중복은 추가되지 않음
  • discard(): 요소 삭제
  • remove(): 요소 삭제
  • clear(): 세트 요소 전체 삭제

세트의 부분 집합 연산

  • 두 개의 세트가 같은지 검사
A = {1, 2, 3}
B = {1, 2, 3}
print(A == B) 
print(A != B) 
'''
>>> True
>>> False
'''
  • 상위 집합 또는 진상위 집합 검사
    • <: 상위 집합 검사
    • <=: 진상위 집합(상위 집합이지만 같지는 않은) 검사
  • 부분 집합
    • issubset(): 부분집합인지 검사
    • isupset(): 상위집합인지 검사
    • in: 요소가 집합에 포함되는지 검사
  • 집합 연산
    • 세트는 집합의 교집합이나 합집합과 같은 여러 가지 집합 연산을 지원합니다. 
    • 합집합: | 연산자, union()
    • 교집합: & 연산자, intersection()
    • 차입합: - 연산자, difference()
    • 기타: all(), any(), enumerate(), len(), max(), min(), sorted(), sum()
반응형