티스토리 뷰
1. set
- 반복가능하고, 가변적이다
- 중복 요소가 없고 정렬되지 않은 컬렉션 데이터 타입이다.
- 인덱스 연산은 할 수 없다
- 멤버십 테스트 및 중복 항목 제거에 이용된다.
- w집합과 관련된 자료형
1
2
3
4
5
6
7
8
9
10
|
#집합 자료형
s = {3,5,7}
print(s)
print(type(s))
"""
{3, 5, 7}
<class 'set'>
"""
|
cs |
1.1 set 메서드
- intersection(), union(), difference()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
a = {1,2,3,4,5}
b = {2,3,4}
#교집합
intersec = a.intersection(b)
print(intersec) #{2, 3, 4}
#합집합
uni = a.union(b)
print(uni) #{1, 2, 3, 4, 5}
#차집합
diff = a.difference(b)
print(diff) #{1, 5}
|
cs |
2. list
- 크기를 동적으로 조정할 수 있는 배열
- 항목을 쉼표로 구분하고, 대괄호[]로 감싼다.
- 항목을 추가할 때, append()와 pop() 메서드 사용 >> 시간복잡도 O(1)
- remove(), index(), 멤버십테스트 in 등의 시간복잡도는 O(n)
- 검색이나 멤버십 테스트 시 빠른 속도가 필요하다면 셋이나 딕셔너리 같은 컬렉션 타입을 선택하는 것이 더 적합함
* 리스트 O(1)
- 동적인 배열
- 수정이 가능하며, 저장용량을 늘이거나 줄일 수 있다.
- 서로 이질적인 객체들의 모음
- ** 리스트의 경우 데이터를 추가할 때 더 큰 크기으 새로운 리스트를 생성한 후 복사한다.
- ** 여유 공간이 부족할 때만 할당과 복사가 이루어진다.
3. Dictionary
- 다른 언어의 해시 테이블 또는 뱁과 같다.
해시 함수(hash function) - 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 - 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속 - 딕셔너리의 각 원소는 Key와 value 하나의 쌍으로 형성
|
- A.get(key) : 딕셔너리 A의 key값을 반환
- key 값이 존재하지 않으면 아무것도 반환하지 않음
- A.pop(key) : 딕셔너리 A의 key 항목을 제거한 후 그 값을 반환
1
2
3
4
5
6
7
8
9
10
11
12
|
trantion = {}
trantion['name'] = "쿠엔틴 타란티노"
trantion['job'] = "감독"
print(trantion) #{'name': '쿠엔틴 타란티노', 'job': '감독'}
print(trantion.get('name')) #쿠엔틴 타란티노
sunnydale = dict(name = "잰더", age = 17, hobby = "게임", address = "서울")
sunnydale.pop("age")
print(sunnydale) #{'name': '잰더', 'hobby': '게임', 'address': '서울'}
|
cs |
4. Tuple
- list와 비슷함
- 소괄호()로 표기
- 변경불가한 자료형
- 쉼표(,)로 구분된 값으로 이루어지는 불변 시퀀스 타입
* 튜플 O(n)
- 정적인 배열
- 생성이 되면 배열의 크기뿐 아니라 그 안의 데이터도 변경할 수 있다.
- 튜플은 파이썬 런타임에서 캐싱하므로 사용할 때마다 커널에 메모리를 요청하지 않아도 됨
- 메모리 오버헤드가 크지 않으며, 그에 대한 연산도 명료
- 변치않는 특정 대상의 여러 속성 표현
- ** 새로운 항목을 추가할 때마다 할당과 복사가 일어남 , 이때 여유 공간을 할당하지 않으면 자원을 더 적게 사용
NOTE) 다음 데이터를 튜플과 리스트 중 어디에 저장해야한 것인가?
1. 처음 20번째까지의 소수? (A) 변하지 않는 정적 데이터이므로 튜플
2. 프로그래밍 언어의 종류? (A) 데이터가 계속 증가할 수 있으므로 리스트 사용
3. 사람의 나이, 몸무게 키? (A) 값 갱신 필요 리스트
4. 사람의 생일과 출생자 (A) 변하지 않은 정적 데이터이므로 튜플
5. 당구게임의 결과 (A) 정적인 데이터이므로 튜플
6. 잇단 당구게임의 결과? (A) 게임을 계속 플레이할 수 있으므로 리스트
'Programming > 자료구조' 카테고리의 다른 글
[자료구조] 5. 탐욕 알고리즘(Greedy Algorithm)& 동적계획법(Dynamic Programming) (0) | 2021.02.06 |
---|---|
[자료구조] 3. 검색알고리즘 (이분색, 순차검색... ) (0) | 2020.09.10 |
[자료구조] 1. String & Array (0) | 2020.09.10 |
python 제어문 (0) | 2019.10.06 |
자료구조 - 검색 (0) | 2019.09.30 |