○ 튜플 자료형
- 튜플은 한번 선언된 값을 변경할 수 없다.
- 튜플은 소괄호 () 를 사용한다.
- 튜플을 사용하면 좋은 경우
˙ 서로 다른 성질의 데이터를 묶어서 관리해야 할 경우
-> 최단 경로 알고리즘에서(비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용
˙ 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 경우
-> 튜플은 변경 불가능하므로 키 값으로 사용될 수 있다.
˙ 리스트보다 메모리를 효율적으로 사용해야 할 경우
○ 사전 자료형
- 키와 값의 데이터 쌍으로 이루어진 자료형.
- 사전 자료형은 {} 로 표시되며, 순서가 없다.
- 변경 불가능한 자료형을 키로 사용할 수 있다.
- 해시 테이블(Hash Table)을 사용하므로 데이터의 조회 및 수정이 O(1)시간에 처리할 수 있다.
# 사전 자료형 사용
data = dict()
data['포도'] = 'Grape'
data['키위'] = 'Kiwi'
data['수박'] = 'Watermelon'
# data = {'포도': 'Grape', '키위': 'Kiwi', '수박': 'Watermelon'}으로 저장이 됨
if '수박' in data :
print("'수박' 키가 존재함")
# 데이터가 있으므로 프린터문이 출력이 된다.
# 키 데이터만 담은 리스트 출력
key = data.keys() # key = dict_keys(['포도', '키위', '수박])
# 값 데이터만 담은 리스트 출력
value = data.values() # value = dict_values(['Grape', 'Kiwi', 'Watermelon'])
# 각 키에 따른 값을 하나씩 출력
for key in key:
print(data[key]) # Grape, kiwi, Watermelon 이 하나씩 순서대로 출력됨
○ 집합 자료형
- 집합 자료형은 중복을 허용하지 않으며 순서가 없다.
- 키가 존재하지 않고 값 데이터만 존재. 특정 원소가 존재하는지 검사하는 연산 시간 복잡도는 사전형과 같은 O(1)임.
- 초기화 방법에는 set()함수를 사용하거나 중괄호 {} 를 사용한다.
# 집합 자료형 초기화 방법1
data = set([1,2,3,3,4,5,5])
# 집합 자료형 초기화 방법2
data = {1,1,2,3,4,5,5}
==> 두개 다 data = {1,2,3,4,5}로 초기화 됨
# 합집합, 교집합, 차집합
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
print(a | b) #합집합 {1,2,3,4,5,6,7}
print(a & b) #교집합 {3,4,5}
print(a - b) #차집합 {1,2}
# 집합 자료형 관련 함수
a = set([1,2,3])
# 원소 추가
a.add(4) # a = {1,2,3,4}
# 원소 여러개 추가
a.update([5,6]) # a = {1,2,3,4,5,6}
# 특정 값 삭제
a.remove(3) # a = {1,2,4,5,6}
◎ 사전 사료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 없을 수 없다.