[10장] 튜플(Tuple)
튜플(Tuple)은 이전에 살펴본 리스트와 거의 비슷한 컨테이너 자료형 이지만, 한 가지 다른점이 있습니다. 바로 튜플의 아이템은 수정이 불가하다는 것입니다. 컴퓨터 프로그램에서는 데이터가 수정되면 안 되는 경우가 있습니다. 예를 들어 상점 포스의 제품 가격, 월급 명세서 등은 관리자 권한이 없이 수정되면 안 되는 데이터입니다.
튜플은 리스트와 아이템을 수정할 수 없다는 것을 제외하면 리스트와 거의 비슷하기 때문에 리스트에 대해서 익숙하다면 튜플은 쉽게 이해할 수 있습니다. 아직 리스트가 익숙하지 않다면 먼저 리스트를 복습하는 것을 추천합니다.
1. 튜플 선언
리스트를 선언할 때 대괄호([ ])를 이용했다면, 튜플은 소괄호(( ))를 이용합니다. 다음은 리스트와 튜플을 선언한 코드입니다.
scoreList = [90, 100, 85, 90] # 리스트는 '[ ]'를 이용해서 선언한다.
scoreTuple = (90, 100, 85, 90) # 튜플은 '( )'를 이용해서 선언한다.
2. 아이템 관리(참조)
리스트가 아이템을 관리할 때 인덱스를 이용했듯이 튜플도 인덱스를 이용합니다.
print(scoreTuple[1]) # 인덱스 1에 해당하는 아이템(100) 참조
print(scoreTuple[3]) # 인덱스 3에 해당하는 아이템(90) 참조
마지막 인덱스에 해당하는 아이템을 참조하는 방법도 리스트와 동일하게 len()을 이용해서 튜플의 길이를 구하고 1을 빼서 마지막 인덱스를 구합니다.
print(scoreTuple[len(scoreTuple) - 1]) # 마지막 인덱스에 해당하는 아이템(90)
3. 데이터가 없는 튜플
튜플을 선언할 때 반듯이 데이터가 있어야 하는 것은 아닙니다. 다음은 튜플을 선언했지만 데이터가 하나도 없는 경우입니다.
mp3PlayTuple = () # 데이터 없이 튜플 선언
print(mp3PlayTuple) # 튜플 출력
print(type(mp3PlayTuple)) # 튜플 데이터 타입 출력
mp3PlayTuple은 튜플이기는 하지만 아이템이 하나도 없는 텅 비어 있는 튜플이라고 할 수 있습니다.
4. 반복문을 이용한 튜플 아이템 확인
리스트와 마찬가지로 아이템을 조회할 때 반복문(for, while)을 이용할 수 있습니다.
4-1. for문을 이용한 아이템 확인
for문의 iterable에 리스트를 넣어주면 전체 아이템을 확인 할 수 있습니다.
alphabet = ('A', 'B', 'C', 'D', 'E')
for c in alphabet:
print(c)
4-2. while문을 이용한 아이템 확인
while문의 조건식에 리스트의 길이를 넣어주면 전체 아이템을 확인 할 수 있습니다.
alphabet = ('A', 'B', 'C', 'D', 'E')
i = 0
while i < len(alphabet):
print(alphabet[i])
i += 1
튜플은 리스트와 거의 동일하지만 한번 선언된 튜플은 아이템을 수정할 수 없기 때문에 사용할 수 있는 함수도 제한적입니다. 아이템을 수정하는 함수는 사용할 수 없다고 생각하면 됩니다.
※참고. 리스트에서 사용했던 append(), insert(), extend(), pop(), remove(), sort(), reverse() 함수 등은 튜플에서는 사용할 수 없습니다. 이유는 이러한 함수들은 아이템을 수정하는 기능이 있기 때문입니다.
5. index() 함수
특정 아이템의 인덱스 값을 조회하기 위해서 index() 함수를 이용합니다.
alphabet = ('A', 'B', 'C', 'D', 'E')
print(alphabet.index('A')) # 'A'의 인덱스 값 -> 0
print(alphabet.index('C')) # 'C'의 인덱스 값 -> 2
6. count() 함수
특정 아이템의 개수를 확인하는 함수입니다. 다음은 'A학점'의 개수를 확인하는 코드입니다.
myScores = ('A학점', 'B학점', 'B학점', 'A학점', 'A학점', 'C학점')
print('A학점 개수: ' + str(myScores.count('A학점')) + '개')
7. 튜플 결합
리스트를 연결해서 확장할 때 사용했던 extend()를 튜플에서는 이용할 수 없지만 2개의 튜플을 결합해서 새로운 튜플을 만들 수는 있습니다. 이때 사용하는 연산자는 덧셈('+') 연산자입니다.
scores1 = (80, 90, 100) # 튜플(scores1) 선언
scores2 = (95, 85, 75) # 튜플(scores2) 선언
all = scores1 + scores2 # scores1과 scores2를 결합해서 새로운 튜플 생성
print(all) # 결합된 튜플 출력
8. 리스트와 튜플 변환하기
리스트와 튜플은 필요에 따라 서로 변환이 가능합니다. 예를 들어 튜플에 아이템를 추가해야 하는 경우 튜플은 아이템을 추가할 수 없기 때문에 리스트로 변환한 후 아이템을 추가할 수 있습니다. 그리고 이때 사용되는 함수는 list()와 tuple() 입니다.
list() 함수: 리스트로 변환
tuple() 함수: 튜플로 변환
scores = (90, 85, 100) # 튜플 선언
print('scores: ' + str(scores)) # scores: (90, 85, 100)
print('scores type: ' + str(type(scores))) # scores type: <class 'tuple'>
scores = list(scores) # list()를 이용해서 튜플을 리스트로 변환
print('scores type: ' + str(type(scores))) # scores type: <class 'list'>
scores.append(75) # 아이템(75) 추가
print('scores: ' + str(scores)) # scores: [90, 85, 100, 75]
scores = tuple(scores) # tuple()을 이용해서 리스트를 튜플로 변환
print('scores type: ' + str(type(scores))) # scores type: <class 'tuple'>
print('scores: ' + str(scores)) # scores: (90, 85, 100, 75)
이번 시간에는 튜플(Tuple)에 대해서살펴봤습니다. 다음 시간에는 딕셔너리(Dictionary)에 대해서 살펴보겠습니다.