python

[10장] 튜플(Tuple)

hoazzinews 2024. 12. 2. 09:49

튜플(Tuple)은 이전에 살펴본 리스트와 거의 비슷한 컨테이너 자료형 이지만, 한 가지 다른점이 있습니다. 바로 튜플의 아이템은 수정이 불가하다는 것입니다. 컴퓨터 프로그램에서는 데이터가 수정되면 안 되는 경우가 있습니다. 예를 들어 상점 포스의 제품 가격, 월급 명세서 등은 관리자 권한이 없이 수정되면 안 되는 데이터입니다.

 

튜플은 리스트와 아이템을 수정할 수 없다는 것을 제외하면 리스트와 거의 비슷하기 때문에 리스트에 대해서 익숙하다면 튜플은 쉽게 이해할 수 있습니다. 아직 리스트가 익숙하지 않다면 먼저 리스트를 복습하는 것을 추천합니다.

 

[8장] 리스트 - I

[9장] 리스트 - II

 

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)에 대해서 살펴보겠습니다.

 

이전 글: [9장] 리스트 - II

다음 글: [11장] 딕셔너리