본문 바로가기
[파이썬]/자료형

[파이썬][자료형] 집합

by sung min_Kim 2023. 11. 5.
집합, set

변경 가능한 자료형


집합(set)

 

 집합은 순서를 가지지 않는다. 따라서 고유한 위치를 가지는 인덱스에 접근하지 못한다는 특징이 있다. 

 때문에 요소에 접근하고자 할 경우에는 set 타입을 list 타입으로 형 변환하여 인덱스에 접근할 수 있다.

s1 = {1, 2, 3, 4 ,5}

s1 = list(s1) # list 타입으로 형 변환

print(s1[0]) # 1 출력

집합 표현방법

 

 집합은 중괄호 {} 혹은 set() 함수를 사용하여 생성할 수 있다.

 

· 중괄호 {}를 사용하여 집합을 생성
s1 = {1, 2, 3, 4 ,5}

print(type(s1)) # <class = 'set'> 반환

 

· set() 함수를 사용하여 집합을 생성
s1 = set('Hello')
s2 = set([1, 2, 3, 4, 5])

print(s1) # {'l', 'o', 'H', 'e'} 반환
          ## 순서 없이, 중복된 값 없이 집합이 생성된 모습
          
print(s2) # {1, 2, 3, 4, 5} 반환

 


집합 연산

 

 집합은 중복된 값을 제거하거나 집합 연산(교집합, 합집합, 차집합 등)을 수행하는데 있어 유용하게 사용된다.

 

· 교집합 : 두 집합에 모두 포함된 원소들의 집합을 의미한다. 파이썬에서는 & 기호나 interserction() 메소드를 사용하여 교집합을 구할 수 있다.
s1 = {1, 2, 3, 4, 5}
s2 = {2, 4, 6, 8, 10}

print(s1 & s2) # {2, 4} 출력

 

· 합집합 : 두 집합의 원소를 모두 합친 집합을 의미한다. 파이썬에서는 | 연산자나 union() 메소드를 사용하여 합집합을 구할 수 있다.
s1 = {1, 2, 3, 4, 5}
s2 = {2, 4, 6, 8, 10}

print(s1 | s2) # {1, 2, 3, 4, 5, 6, 8, 10} 출력

 

· 차집합 : 첫 번째 집합의 원 중에서 두 번째 집합의 원소에 포함되지 않은 원소들의 집합을 의미한다. 파이썬에서는 - 연산자나 difference() 메소드를 활용하여 차집합을 구할 수 있다.
s1 = {1, 2, 3, 4, 5}
s2 = {2, 4, 6, 8, 10}

print(s1 - s2) # {1, 3, 5} 출력

 


 

집합은 중복된 값이 여러 번 들어와도 한 번만 저장되므로, 중복된 값을 효과적으로 제거할 수 있다.

리스트와 딕셔너리를 해당 상황에 사용하려면 추가적인 코드가 필요할 수 있다.

 

집합에서는 각 원소 자체가 고유한 키의 역할을 수행한다.

{1, 2, 3} 이라는 집합에서 각 1, 2, 3 이 고유한 키 값이 된다는 것이다.

이러한 원소들은 고유한 위치에 저장이 되기 때문에 원소의 존재 유무를 빠르게 확인하는 것이 가능하며, 이 경우에는 리스트보다 집합을 사용하는게 더 효율적이라 하겠다.

 

집합와 유사하게 딕셔너리의 경우 키와 값을 쌍으로 가지고 있어 키를 통해 값을 빠르게 찾을 수 있는데에 반해, 집합은 값을 가지지 않고 고유한 키인 원소만을 가지기 때문에 단순히 원소의 존재 유무만을 빠르게 파악할 수 있다.

 

각 자료형의 특성을 잘 이해하고 적절하게 사용하는 것이 매우 중요하겠다.

 

다음에는 제어문에 대해 알아보도록 하자.

 

 

'[파이썬] > 자료형' 카테고리의 다른 글

[파이썬][자료형] 불리언  (0) 2023.11.05
[파이썬][자료형] 딕셔너리  (0) 2023.11.05
[파이썬][자료형] 배열  (0) 2023.11.04
[파이썬][자료형] 문자형  (0) 2023.11.04
[파이썬][자료형] 숫자형  (0) 2023.11.03