파이썬로드

파이썬 독학, 집합자료형

CODINGLORD 2024. 7. 2. 14:01


집합 자료형


1. 집합이란?

집합은 중복되지 않는 요소들의 모임입니다. 

파이썬의 집합 자료형은 수학의 집합 개념을 바탕으로 하며, 요소들의 순서가 없습니다.


2. 집합은 어떻게 만들까?

집합은 중괄호 `{}`를 사용하거나 `set()` 함수를 사용하여 생성할 수 있습니다.

예제 1

# 중괄호를 사용하여 집합 생성
fruits = {"apple", "banana", "cherry"}
print(fruits)  # {"apple", "banana", "cherry"}


예제 2

# set() 함수를 사용하여 집합 생성
numbers = set([1, 2, 3, 4, 5])
print(numbers)  # {1, 2, 3, 4, 5}

 


3. 집합의 특징

- 중복을 허용하지 않음: 집합 내의 모든 요소는 유일합니다.
- 순서가 없음: 집합은 순서가 없기 때문에 인덱싱을 사용할 수 없습니다.(?)

예제

fruits = {"apple", "banana", "cherry", "apple"}
print(fruits)  # {"apple", "banana", "cherry"} (중복된 "apple"은 하나만 남음)



4. 집합에 요소 추가하기

`add()` 메서드를 사용하여 집합에 새로운 요소를 추가할 수 있습니다.

예제 1

fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits)  # {"apple", "banana", "cherry"}

 


예제 2

numbers = {1, 2, 3}
numbers.add(4)
print(numbers)  # {1, 2, 3, 4}

 


 5. 집합에서 요소 제거하기

`remove()` 메서드를 사용하여 집합에서 특정 요소를 제거할 수 있습니다. 요소가 없으면 `KeyError`가 발생합니다. `discard()` 메서드는 요소가 없어도 에러를 발생시키지 않습니다.


예제 1

fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits)  # {"apple", "cherry"}



예제 2

numbers = {1, 2, 3, 4}
numbers.discard(5)  # 요소가 없어도 에러가 발생하지 않음
print(numbers)  # {1, 2, 3, 4}



6. 집합 연산

합집합

두 집합의 모든 요소를 포함하는 새로운 집합을 만듭니다. `|` 연산자 또는 `union()` 메서드를 사용합니다.

예제 1

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

 


예제 2

set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.union(set2)
print(result)  # {"apple", "banana", "cherry"}


교집합

두 집합에 모두 존재하는 요소들로 구성된 새로운 집합을 만듭니다. `&` 연산자 또는 `intersection()` 메서드를 사용합니다.

 

예제 1

set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 & set2
print(result)  # {2, 3}



예제 2

set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.intersection(set2)
print(result)  # {"banana"}


차집합

첫 번째 집합에는 존재하지만 두 번째 집합에는 존재하지 않는 요소들로 구성된 새로운 집합을 만듭니다. `-` 연산자 또는 `difference()` 메서드를 사용합니다.

예제 1

set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 - set2
print(result)  # {1}



예제 2

set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.difference(set2)
print(result)  # {"apple"}

 

7. 집합 관련 함수

 `len()`: 집합의 길이(요소의 개수)를 반환합니다.

fruits = {"apple", "banana", "cherry"}
print(len(fruits))  # 3

 


`clear()`: 집합의 모든 요소를 제거합니다.

fruits = {"apple", "banana", "cherry"}
fruits.clear()
print(fruits)  # set()



`copy()`: 집합의 얕은 복사본을 반환합니다.

fruits = {"apple", "banana", "cherry"}
fruits_copy = fruits.copy()
print(fruits_copy)  # {"apple", "banana", "cherry"}



 `issubset()`: 집합이 다른 집합의 부분 집합인지 확인합니다.

set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2))  # True



`issuperset()`: 집합이 다른 집합을 포함하는지 확인합니다.

set1 = {1, 2, 3, 4, 5}
set2 = {2, 3}
print(set1.issuperset(set2))  # True

 


 `symmetric_difference()`: 두 집합 간에 겹치지 않는 요소들로 구성된 새로운 집합을 반환합니다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.symmetric_difference(set2)
print(result)  # {1, 2, 4, 5}