집합(set)

애늙은이·2023년 7월 25일
0
post-thumbnail

세 번째로 알아볼 컨테이너 자료형은 집합입니다.

🤔 집합이란?

집합은 순서가 없고 중복이 허용되지 않는 데이터의 모음입니다. 중괄호({})나 set() 안에 리스트나 문자열을 입력하여 생성할 수 있습니다.

a = {1, 2, 3}
b = set("icebreakers")
print(a) # 결과: {1, 2, 3}
print(b) # 결과: {'i', 'c', 'e', 'b', 'r', 'a', 'k', 's'}

🔑 집합의 인덱싱과 슬라이싱

집합은 순서가 없는 자료형이기에 인덱싱과 슬라이싱을 사용할 수 없습니다. 인덱싱과 슬라이싱을 사용하기 위해서는 튜플이나 리스트와 같은 자료형으로 바꿔야 합니다.

a = set([4, 5, 6])
# print(a[0]) # ERROR!

l_a = list(a) 
print(type(l_a)) # 결과: list
print(l_a[0]) # 결과: 4

t_a = tuple(a)
print(type(t_a)) # 결과: tuple
print(t_a[1]) # 결과: 5

📐 집합의 연산

파이썬에서는 교집합, 합집합, 차집합을 구할 수 있습니다.

교집합 구하기

교집합은 &이나 집합 관련 함수인 intersection을 통해 구할 수 있습니다.

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}

합집합 구하기

합집합 |나 집합 관련 함수 union을 통해 구할 수 있습니다.

print(a | b) # 결과: {1, 2, 3, 4 ,5, 6, 7}
print(a.union(b)) # 결과: {1, 2, 3, 4 ,5, 6, 7}

차집합 구하기

차집합은 -나 집합 관련 함수 difference를 통해 구할 수 있습니다.

print(a - b) # 결과: {1, 2}
print(b.difference(a)) # 결과: {5 ,6}, 어떤 집합을 기준으로 하냐에 따라 결과가 다르다.

⚓ 집합의 수정

집합은 순서가 없는 자료형이기에 인덱스를 사용할 수 없습니다. 따라서 집합 관련 함수를 통해 집합 내의 원소를 추가하거나 제거합니다. 집합에 .을 붙인 뒤 함수를 호출하여 사용합니다.

함수기능
add(elem)집합에 값을 한 개만 추가
update(elems)집합에 값을 여러 개 추가(elems는 리스트나 튜플)
remove(elem)집합 내 특정 요소 제거
profile
글쓰는 개발자입니다.

0개의 댓글