티스토리 뷰

Python

[Python] Set (집합)

ellie.strong 2020. 10. 21. 21:42
728x90

1. Set (집합)

Set은 다음과 같은 특징을 갖는다. 

 

  • 중복을 허용하지 않는다. 
  • 순서가 없다. → sort 함수 사용 불가
  • 키가 존재하지 않고, 값 데이터만을 담는다.

특정 원소가 존재하는지를 검사하는 연산의 시간 복잡도는 사전 자료형과 마찬가지로 O(1)이다. 

 

집합 자료형의 초기화

합은 기본적으로 리스트 혹은 문자열을 이용해서 만들 수 있으며, set() 함수를 이용하거나, 중괄호({}) 안에 각 원소를 콤마(,)를 기준으로 구분해서 넣으면 된다. 

data = set([1, 1, 2, 3, 4, 4, 5])
print(data) # {1, 2, 3, 4, 5}

data = set("LLISAA")
print(data) # {'L', 'I', 'S', 'A'}

data = {1, 1, 2, 3, 4, 4, 5}
print(data) # {1, 2, 3, 4, 5}

다음과 같이 선언할 경우 dictionary(dict) 자료형이 됨에 주의하자!

data = {} # data = dict()

 

집합 자료형의 연산

a = set([1, 2, 3, 4, 5])
b = {3, 4, 5, 6, 7}

합집합 '|'

print(a | b) # {1, 2, 3, 4, 5, 6, 7}

교집합 '&'

print(a & b) # {3, 4, 5}

차집합 '-'

print(a - b) # {1, 2}

 

집합 자료형 관련 함수

data = set([1, 2, 3])

add() : 하나의 집합 데이터에 값을 추가한다. O(1)

data.add(4)
print(data) # {1, 2, 3, 4}

update() : 여러 개의 값을 한꺼번에 추가한다. 

data.update([5, 6])
print(data) # {1, 2, 3, 4, 5, 6}

remove() : 특정한 값을 제거한다. O(1)

data.remove(3)
print(data) # {1, 2, 4, 5, 6}

 

코딩 테스트>>

  • 특정한 데이터가 이미 등장한 적이 있는지 여부를 체크할 때 매우 효과적이다. 
  • list에서 중복을 제거해야할 때 사용될 수 있다.

코딩테스트 연습 - 두 개 뽑아서 더하기 | 프로그래머스 (programmers.co.kr)

sorted(list(set(answer)))

위의 경우 list 자료형의 answer에 대해

 

  1. set 함수로 중복을 제거
  2. list 함수로 다시 list 자료형으로 변환
  3. sorted 함수로 list를 정렬해서 반환

의 과정을 나타낸 것이다. 

 

 

 

 

변환

dict를 set으로 변환할 경우 key값만 가져온다. 

value를 가져오고 싶을 경우 set(dict.value())를 사용해야한다. 

 

728x90
댓글
공지사항
최근에 올라온 글