티스토리 뷰
오늘은 비교적 쉬운 주제인 집합에 대한 메서드를 배워볼 예정이다. 이전 데이터타입을 공부하면서 어차피 뒤에 메서드 관련내용이 나올거라며 어떠한 것이 있는지 크게 다루지 않았는데, 의외의 장점을 가지고 있기 때문에 알아두면 좋다.
세트 Method
: 가장 중요한 내용은 정렬이 되지 않은 비 시퀀스. 순서도 없고 정렬도 없고 중복도 없다. 수학에서도 집합이라는 요소에 겹치게 되면 사라지지 않는가? 그것을 생각하면 편할 것 같다.
Method | 설명 |
s.add(x) | 세트에 데이터를 추가. 중복되는 데이터라면 변동 없음 |
s.clear() | list와 같이 내부 데이터를 모두 없애는 메서드 |
s.remove(x) | 데이터를 제거한다. 해당 데이터가 없다면 Key error 발생 |
s.discard(x) | 데이터를 제거한다. 해당 데이터가 없다면 변동 없음 |
s.pop() | 세트에서 랜덤하게 항목을 반환(return)하고 제거한다. |
s.update(iterable) | 세트에 다른 iterable한 데이터를 추가한다. |
# set에 항목 x를 추가한다. set()를 통해 생성하거나 중괄호를 사용한다.
# s.add(x)
set_test = {1, 'a', 3, 'b', 5}
set_test.add(6) # 한번에 여러개의 요소를 넣을 수는 없다.
print(set_test) # {1, 3, 'b', 5, 6, 'a'} set는 출력때마다 순서가 달라짐
print(set_test) # {'a', 1, 3, 5, 6, 'b'} 하지만 정수데이터의 순서는 같다? To be continue..
# set의 모든 데이터를 제거
# s.clear()
set_test.clear()
print(set_test) # set() 빈 세트를 나타내는것은 set()이며 {}로 나타내지 않는다.(dict와 구분)
# set의 특정 데이터 제거
# s.remove(x)
set_test = {3, 1, 'z', 't', 10, 'code'}
set_test.remove('code')
print(set_test) # {'z', 1, 3, 10, 't'}
# set_test.remove('Larva') # KeyError: 'Larva' 없는 단어를 제거한다면 쿨하고도 짧은 오류를 리턴해준다
# set의 특정데이터 제거 (중복아님)
# s.discard(x)
set_test_1 = {5, 'k', 12, 'hungry', '11'}
set_test_1.discard('11')
print(set_test_1) # {5, 'hungry', 12, 'k'} 11이 제거됨을 알 수 있다.
set_test_1.discard('Larva')
print(set_test_1) # {5, 'hungry', 12, 'k'} 없는 단어를 제거하려 시도해도 오류가 생기지 않는다.
# set의 임의의 요소 반환 및 제거, list에서는 가장 오른쪽 요소 제거, 직접 지정도 가능
# s.pop()
set_test_2 = {1, 'a', 3, 'b', 5}
word_1 = set_test_2.pop()
print(word_1) # 1 // b
print(set_test_2) # {3, 5, 'b', 'a'} // {1, 3, 5, 'a'}
word_2 = set_test_2.pop()
print(word_2) # 3 // 1
print(set_test_2) # {5, 'b', 'a'} // {3, 5, 'a'}
word_3 = set_test_2.pop()
print(word_3) # 5 // 3
print(set_test_2) # {'b', 'a'} // {5, 'a'} 실행시마다 임의의 요소 반환을 확인할 수 있다.
# set 안에 다른 iterable한 데이터를 추가, 중복되는 데이터는 자동으로 추가되지않는다.
# s.update(iterable)
set_test_3 = {'a', 'b', 'c', 6, 7, 10}
set_test_3.update((6, 8))
print(set_test_3) # {'a', 'b', 6, 7, 8, 10, 'c'} 튜플로 넣어도, 리스트로 넣어도 들어간다.
set_test_3.update(['bc', 'abc', (100, 20)])
print(set_test_3) # {'b', 6, 7, 8, 10, 'abc', 'c', (100, 20), 'a', 'bc'}
티스토리의 마크다운을 사용하는 것보다 이렇게 올리는 것이 좀 더 가독성이 좋아보여서 앞으로 이렇게 올릴 예정!
Method | 설명 | 연산자 |
setA.difference(setB) | A에는 있지만 B에는 없는 항목으로 세트를 생성 및 반환(차집합) | setA - setB |
setA.intersection(setB) | A와 B 모두 들어있는 항목으로 세트를 생성 및 반환(교집합) | setA & setB |
setA.issubset(setB) | 모든 A 데이터들이 B에 들어있다면 True 반환(포함관계) | setA <= setB |
setA.issuperset(setB) | A 에 B의 데이터들을 모두 갖고있다면 True 반환(포함관계) | setA >= setB |
setA.union(setB) | A 또는 B에 들어있는 항목으로 세트를 생성 및 반환(합집합) | setA | setB |
set_A = {1, 3, 2, 4, 10}
set_B = {5, 6, 7, 1, 10}
# set_A - set_B : 차집합
result_1 = set_A.difference(set_B)
print(result_1) # {2, 3, 4}
# set_A & set_B : 교집합
result_2 = set_A.intersection(set_B)
print(result_2) # {1, 10}
# set_A | set_B : 합집합
result_3 = set_A.union(set_B)
print(result_3) # {1, 2, 3, 4, 5, 6, 7, 10}
set_C = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
set_D = {5, 6, 7, 1, 10}
# set_C <= set_D : 포함관계
result_4 = set_C.issubset(set_D)
print(result_4) # False
# set_C >= set_D : 포함관계
result_5 = set_C.issuperset(set_D)
print(result_5) # True
영어를 못하다보니 함수명을 외우기보다 기호를 외우기 편한 것 같긴하다. 아직 여럿 알고리즘 문제를 풀면서 중복을 걸러낼때 사용하는 set() 을 제외하고는 많이 안써봤지만, 항상 이런 방법들이 있다고 인지하고 있고 풀다가 막히면 set를 떠울리는 연습중이다.
다음 시간에는 dictionary에 대해 배워볼 예정이다!
728x90
'일상코딩 > 노트' 카테고리의 다른 글
Python Functions(2) [재귀함수, 유용한 내장함수] (1) | 2024.01.27 |
---|---|
Python Method (딕셔너리 Method) (0) | 2024.01.26 |
Python Method (리스트 Method) (0) | 2024.01.23 |
Python Method (문자열 Method) (1) | 2024.01.22 |
Python Functions(1) [함수의 구조] (0) | 2024.01.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- basic syntax
- Database
- SQL
- dfs
- honeymoney
- Python
- 순열
- 카운팅정렬
- 연산자
- CodeTree
- 재귀
- ssafy
- vue
- 삼성청년SW아카데미
- Authentication System
- app
- views.py
- Sequence types
- 함수
- ChatGPT
- refactoring
- baby-gin
- SQLite
- Method
- 백준
- vue3
- Component
- JavaScript
- Django
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함