달구는 오늘도 코딩중!

[Python] 집합 자료형

austin lee 2023. 7. 13. 20:37

집합 자료형은, 말 그대로 집합(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