set()은 indexing, slicing, 중복이 없음.
순서가 없기 때문에 인덱싱 불가능 -> set을 리스트나 튜플로 변환한 후 인덱싱으로 접근하는 방법이 있음.
set()은 합집합, 교집합, 차집합, symmetric difference(둘 중 한 집합에는 속하지만 둘 모두에는 속하지는 않는 원소들의 집합)에 사용 할 수 있음.
🎨 set 만들기
- {}안에 ,로 요소 구분하기 ex) {'hello', 'set'}
- set comprehension ex) {i for i in '12345' if int(i)%2 == 0 }
- 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 |