Languages/Python

set() 자료형

잔망루피 2021. 3. 19. 12:52

set()은 indexing, slicing, 중복이 없음.

순서가 없기 때문에 인덱싱 불가능 -> set을 리스트나 튜플로 변환한 후 인덱싱으로 접근하는 방법이 있음.

set()은 합집합, 교집합, 차집합, symmetric difference(둘 중 한 집합에는 속하지만 둘 모두에는 속하지는 않는 원소들의 집합)에 사용 할 수 있음.

 

🎨 set 만들기

  1. {}안에 ,로 요소 구분하기 ex) {'hello', 'set'}
  2. set comprehension ex) {i for i in '12345' if int(i)%2 == 0 }
  3. set() 사용하기 ex) set(['a', 'b', 'c', 'd', 'e']}

 

# 교집합
집합1 & 집합2		
집합1.intersection(집합2)	

# 합집합
집합1 | 집합2
집합1.union(집합2)

# 차집합
집합1 - 집합2
집합1.difference(집합2)

 

add(값)

1개의 원소만 추가

 

update(값)

값 여러 개 추가

리스트를 set에 추가할시 update를 써야함

숫자 여러 개를 추가할 때 리스트로 묶어서 넣자.

 

집합.remove(값)
집합.discard(값)

원소 삭제

remove는 집합이 삭제하려는 값이 없으면 에러를 일으킨다.

discard는 그렇지 않음.

 

# 가능
x in set
len(set)
for x in set

파이썬의 set에서 in은 시간복잡도가 O(1)이다.

리스트에서는 O(N)이다.

순서가 중요하지 않은 탐색에서는 리스트 대신 set을 써야겠다.

 

set([[1, 2], [3, 4]])

이처럼 2차원 리스트는 set을 만들려고 하면 TypeError : unhashable type: 'list'가 뜬다.

튜플을 사용하자

반응형

'Languages > Python' 카테고리의 다른 글

문자열 format  (0) 2021.04.30
파이썬 정규 표현식  (0) 2021.04.26
[Error] int object is not callable  (0) 2021.02.24
함수  (0) 2021.01.18
print  (0) 2021.01.08