티스토리 뷰

728x90
중복된 값을 허용하지 않는 데이터 구조로
집합에 관련된 연산을 쉽게 처리하기 위해 만들어진 자료형입니다.
 
집합은 중괄호 `{}`를 사용하여 생성하며 각 원소들은 쉼표(,)로 구분됩니다.
 
# 집합 생성
fruits = {"apple", "banana", "orange"}

# 집합에 원소 추가
fruits.add("grape")  # {"apple", "banana", "orange", "grape"}

# 집합에서 원소 삭제
fruits.remove("banana")  # {"apple", "orange", "grape"}

# 집합의 원소 개수 확인
num_fruits = len(fruits)  # 3

# 집합에 원소가 있는지 확인
print("apple" in fruits)  # True
print("kiwi" in fruits)   # False
집합은 리스트와 비슷한 형태처럼 보이지만
사용될 때는 몇 가지 차이점이 있습니다.

1. 중복 원소 제거
    중복된 값을 허용하지 않으므로 동일한 값을 입력하면 무시됩니다.

2. 순서가 없음
    인덱스를 사용하여 원소에 접근할 수 없습니다.
    딕셔너리에서 사용되는 키도 없으므로 키로 접근하는 것도 불가능합니다.

3. 집합 연산
    교집합, 합집합, 차집합 등의 연산을 지원하여 
    2개 이상의 집합 원소 중 중복을 제거하거나 집합 간의 관계를 확인할 수 있습니다.

ㅇ 요소 추가하기

s = set()

s.add(3)
print(s)  # {3}

s.update(['z', 'y', 'x'])
print(s)  # {3, 'z', 'y', 'x'}

ㅇ 요소 수정하기 : 불가

 

ㅇ 요소 삭제하기

s = set(['a', 'b', 1, 2, '가', '나', 'a', 1, '가'])
print(s.pop())  # 1 (마지막 요소를 꺼냄)

s.remove(2)
print(s)  # {'b', 'a', '나', '가'}

s.clear()
print(s)  # set()

    - 순서가 없다고 했지만 실제 내부적으로 처리되는 순서는 존재합니다.

      (코드로 입력된 순서 개념이 없을 뿐입니다)

 

ㅇ 교집합

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a & b)  # {3, 4, 5}
print(a.intersection(b))  # {3, 4, 5}

ㅇ 합집합

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a | b)  # {1, 2, 3, 4, 5, 6, 7}
print(a.union(b))  # {1, 2, 3, 4, 5, 6, 7}

 

ㅇ 차집합

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a - b)  # {1, 2}
print(a.difference(b))  # {1, 2}

 

집합은 데이터에서 중복된 값을 제거하거나 고유한 원소들을 모을 때 유용하게 사용됩니다.
또한, 집합 연산을 활용하여 데이터 분석이나 문제 해결에 도움이 됩니다.