세 번째로 알아볼 컨테이너 자료형은 집합입니다.
집합은 순서가 없고 중복이 허용되지 않는 데이터의 모음입니다. 중괄호({}
)나 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) | 집합 내 특정 요소 제거 |