Stay Hungry Stay Foolish

알고리즘

[파이썬] set() (집합 함수)

dev스카이 2024. 10. 24. 14:24

set()

파이썬의 set(집합)은 중복을 허용하지 않는 변경 가능한 데이터 구조로, 수학에서의 집합과 유사한 개념을 제공합니다. 순서가 없고, 각 요소는 고유해야 하며, 요소 간의 빠른 검색, 추가, 삭제를 지원합니다.

 

set의 주요 특징

  1. 중복 허용 안함: 한 집합 내에서 동일한 값이 중복될 수 없습니다.
  2. 순서 없음: 저장된 순서가 유지되지 않으며, 요소를 인덱스로 접근할 수 없습니다.
  3. 변경 가능: 집합은 새로운 요소를 추가하거나 삭제할 수 있습니다.
  4. 빠른 연산: 해시 테이블 기반으로, 원소의 추가/제거/검색이 평균적으로 매우 빠릅니다.

 

set 생성하는 법

  • 중괄호 {}를 사용하거나 set() 함수를 사용하여 집합을 생성합니다.
# 방법 1: 중괄호 사용
my_set = {1, 2, 3, 4, 5}

# 방법 2: set() 함수 사용
my_set = set([1, 2, 3, 4, 5])

 

주요 연산

my_set.add(6)         # 요소 추가
my_set.remove(4)      # 요소 제거
my_set.discard(10)    # 요소 제거 (존재하지 않아도 오류 없음)
my_set.clear()        # 모든 요소 제거
  1. 요소 추가 : add() 메서드를 사용해 집합에 요소를 추가할 수 있습니다.
  2. 요소 삭제 : remove()와 discard() 메서드를 사용해 요소를 제거합니다.
    • remove()는 존재하지 않는 요소를 삭제하려 하면 오류가 발생하지만,
    • discard()는 존재하지 않아도 오류가 발생하지 않습니다.
  3. 모든 요소 제거: clear() 메서드로 집합의 모든 요소를 제거할 수 있습니다.

집합 연산

파이썬의 set은 수학적 집합 연산을 지원합니다.

 

1️⃣ 1. 합집합 (| 또는 union())

set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1 | set2
print(result)

 

출력 결과

{1, 2, 3, 4, 5}

 

 
2️⃣ 2. 교집합 (& 또는 intersection())
result = set1 & set2
print(result)

 

출력 결과

{3}

 

 
3️⃣ 3. 차집합 (- 또는 difference())
result = set1 - set2 
print(result)

 

출력 결과

{1, 2}

 

 
4️⃣ 4. 대칭차집합 (^ 또는 symmetric_difference())
  • 두 집합 간에 서로 없는 요소만 포함.
result = set1 ^ set2
print(result}

 

출력 결과

{1, 2, 4, 5}

요소 검사

집합 안에 특정 요소가 있는지 확인할 수 있습니다.

if 3 in set1:
    print("3이 set1에 있습니다.")

 

중복 제거

리스트나 다른 자료형에서 중복을 제거할 때도 set을 사용할 수 있습니다.

my_list = [1, 2, 2, 3, 3, 4]
unique_items = set(my_list) 
print(unique_items)

 

출력 결과

{1, 2, 3, 4}

 

집합 특징 요약

  • 중복을 허용하지 않음.
  • 순서가 없는 데이터 구조.
  • 수학적 집합 연산(합집합, 교집합, 차집합 등)을 제공.
  • 빠른 검색과 추가/삭제가 가능.

set은 데이터의 고유성을 보장하고, 중복된 값을 처리하거나 집합 연산이 필요한 경우에 유용하게 사용됩니다.

'알고리즘' 카테고리의 다른 글

[파이썬] zip() 함수  (0) 2024.10.25
[파이썬] 딕셔너리(Dictionary), dict()  (0) 2024.10.25
[파이썬] replace() 메서드  (0) 2024.10.22
[파이썬] 자료 구조 - deque  (0) 2024.10.21
[파이썬] 리스트 컴프리헨션  (1) 2024.10.21