본문 바로가기
Study/Python study

[Python(파이썬)] 세트(set)

by 파크영 2021. 7. 15.

세트 (set)

  • 중복된 데이터를 허용하지 않는다.
  • 비순차 자료형, 가변 자료형
  • 인덱스로 접근 불가하다.
  • 항목들을 {} 로 감싸고 각각의 항목은 쉼표(,)로 구분한다. 
  • 집합 선언 방법 - set()
# 빈 집합 선언 방법
>>> test = set()
>>> type(test)
<class 'set'>
>>> test

 

>>> test = {'a','c','a','b','c','d','e'}

# set은 중복 된 항목 제거됨
>>> test
{'b', 'c', 'a', 'd', 'e'}

# 항목 존재 유무 확인 - True, False로 반환
>>> 'a' in test
True
>>> 1 in test
False

>>> type(test)
<class 'set'>

 

※ 빈 집합은 {}로 선언 불가하다. {}로 선언하면 딕셔너리 타입이 생성된다. 

반드시 set()을 이용해 빈 집합 선언

# 빈 집합 선언이 아닌 빈 딕셔너리가 선언
>>> test2 = {}
>>> test2
{}
>>> type(test2)
<class 'dict'>

 

  • 수학 집합에서 다루는 교집합, 합집합, 차집합 등을 구하는데 유용
>>> test1 = {1, 71, 23, 5, 8, 12, 39}
>>> test2 = {5, 23, 12, 54, 66, 2}

 

1. 교집합 

'&' or intersection()을 사용하여 구할 수 있다. 

# 방법1 - '&'
>>> test1 & test2
{12, 5, 23}

# 방법2 - intersection()
>>> test1.intersection(test2)
{12, 5, 23}

>>> test2.intersection(test1)
{12, 5, 23}

 

2. 합집합

'|' or union()을 사용하여 구할 수 있다.

# 방법1 - '|'
>>> test1 | test2
{1, 66, 2, 5, 39, 71, 8, 12, 54, 23}

# 방법2 - union()
>>> test1.union(test2)
{1, 66, 2, 5, 39, 71, 8, 12, 54, 23}

>>> test2.union(test1)
{1, 66, 2, 5, 39, 71, 8, 12, 54, 23}

 

3. 차집합

'-' or difference()을 사용하여 구할 수 있다.

# 방법1 - '-'
>>> test1 - test2
{8, 1, 39, 71}

# 방법2 - 'difference'
>>> test1.difference(test2)
{8, 1, 39, 71}


>>> test2 - test1
{66, 2, 54}

>>> test2.difference(test1)
{66, 2, 54}

 

댓글