집합 자료형은, 말 그대로 집합(set)에 관련된 것을 쉽게 처리하기 위한 자료형입니다.
다음과 같이 집합 자료형을 선언할 수 있습니다.
>>> s1 = set([1,2,3])
>>> s1
{1,2,3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}
얼핏 보면 집합 자료형은 이전에 다루었던 리스트와 비슷해 보이지만, 2가지 차이점을 가집니다.
- 중복을 허용하지 않는다.
- 순서가 없다.
리스트는 요소의 순서가 있기 때문에 인덱스를 통해 값에 접근할 수 있지만, 집합은 순서가 없기 때문에 인덱스 등을 통해 요소에 접근하는 것이 불가능합니다. 만약 set에 저장된 값을 인덱싱으로 접근하고 싶다면, 다음과 같이 리스트로 변환한 후에 해야 합니다.
s1 = set([1,2,3])
l1 = list(s1)
이러한 특징들 때문에, 집합 자료형은 리스트와 구분되어 사용됩니다. 리스트가 인덱싱을 통해 많이 접근된다면, 집합은 특정 요소가 집합에 존재하는지 확인하기 위해 많이 사용합니다. 특히 교집합과 합집합, 차집합 등을 구할 때 매우 유용하게 쓰입니다.
먼저, 집합 자료형에 요소를 추가하거나 제거하는 방법에 대해 알아보겠습니다.
s1 = set([1,2,3])
#값 1개 추가하기
s1.add(4)
#결과 : {1,2,3,4}
#값 여러 개 추가하기
s1.update([4,5,6])
#결과 : {1,2,3,4,5,6}
#특정 값 제거하기
s1.remove(2)
#결과 : {1,3}
#집합 초기화하기
s1.clear()
#결과 : {}
아래 코드는 집합 자료형에서 교집합과 합집합, 차집합을 구하는 방법입니다.
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
#교집합 구하기
s1 & s2
#결과 : {4,5,6}
#다음과 같이 쓸 수도 있다(결과는 동일)
s1.intersection(s2)
#합집합 구하기
s1 | s2
#결과 : {1,2,3,4,5,6,7,8,9}
#다음과 같이 쓸 수도 있다(결과는 동일)
s1.union(s2)
#차집합 구하기
s1 - s2
#결과 : {1,2,3}
#다음과 같이 쓸 수도 있다(결과는 동일)
s1.difference(s2)
집합 자료형은 딕셔너리와 매우 유사합니다. (사실 집합 자료형은 key만 존재하는 딕셔너리라고 봐도 무방합니다)
이는 특정 요소의 존재 유무를 판단하는 데 매우 유용하게 사용되니, 잘 숙지하시기 바랍니다.
저는 다음에 더 유익한 내용으로 찾아뵙겠습니다.
감사합니다.
< 참고자료 >
- 점프 투 파이썬(박응용)
'달구는 오늘도 코딩중!' 카테고리의 다른 글
[Pandas] DataFrame의 구조 (2) | 2024.01.09 |
---|---|
[Python] 함수 (0) | 2023.08.01 |
[Python] 반복문 (0) | 2023.07.02 |