add, remove, update, &, |, -
| 메서드 | 설명 | 예시 |
|---|---|---|
add(값) |
요소 하나를 집합에 추가 | s.add(4) |
remove(값) |
집합에서 요소 하나를 제거 (없으면 오류) | s.remove(2) |
update(반복가능객체) |
여러 요소를 집합에 한 번에 추가 | s.update([5, 6, 7]) |
discard(값) |
요소 제거 (없어도 오류 없음) | s.discard(10) |
튜플은 불변이라 원소 추가/삭세/수정 메서드가 아예 없다.
가변인 list, set, dict, deque를 보자
| 컬렉션 | 추가 메서드 | 예시 | 특징 |
|---|---|---|---|
| set | .add(x) |
s.add(5) |
원소 하나 추가 |
| list | .append(x) |
lst.append(5) |
끝에 하나 추가 |
| dict | d[k] = v |
d[5] = "a" |
메서드 아니라 키 할당 |
| deque | .append(x) / .appendleft(x) |
dq.append(5) |
양쪽 다 가능 |
append 쓰면 에러
2. list에 add 쓰면 에러 (반대도 마찬가지)
3. 여러 개를 한 번에 넣기 — 메서드가 또 달라| 하나 추가 | 여러 개 추가 | |
|---|---|---|
| list | .append(x) |
.extend([a,b,c]) |
| set | .add(x) |
.update([a,b,c]) |
| 연산 | list | deque |
|---|---|---|
| 뒤에 추가 | append O(1) |
append O(1) |
| 뒤에서 제거 | pop() O(1) |
pop() O(1) |
| 앞에 추가 | insert(0,x) O(n) |
appendleft O(1) |
| 앞에서 제거 | pop(0) O(n) |
popleft O(1) |
인덱스 접근 dq[3] |
O(1) | O(n) ← deque 약점 |
그러면 직접 수정하는건 add, remove, update, discard 뿐인가?
정확하게 봐보자.
add, remove, discard는 set의 함수이고, pop, clear도 사용할 수 있다.
union | → update |=
intersection & → intersection_update &=
difference - → difference_update -=
symmetric_difference ^ → symmetric_difference_update ^=