[Python – 기초 강좌] 9. 자료구조 (Data Structure): Tuple 편

Python에서 Tuple(튜플)이란?

자료 구조에 대해서는 앞선 포스팅에서 간략히 소개했고, 이번 포스팅에서는 Python의 자료구조 중 Tuple에 대해 소개하고자 합니다.

Tuple은 파이썬의 기본 자료구조 중 하나로, 리스트와 유사하게 순서가 있는 컬렉션입니다.

하지만 튜플은 한 번 생성되면 그 내용을 변경할 수 없는 불변적(Immutable) 자료구조라는 점에서 리스트와 다릅니다.

이러한 특성 때문에 프로그램 실행 도중 값이 변하지 않기를 원하는 데이터를 저장할 때 주로 사용됩니다.

tuple

Tuple 사용 방법

생성

튜플을 생성하기 위해서는 괄호()를 사용하며, 각 요소는 콤마(,)로 구분합니다.

요소가 하나 뿐 인 튜플을 만들 때는 요소 뒤에 콤마(,)를 붙여야 합니다.

예제

# create tuple
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple)

# create tuple with single element
single_element_tuple = (1,)
print(single_element_tuple)

결과

(1, 2, 3, 4, 5)
(1,)

접근

특정 요소에 접근하려면 인덱스를 사용하여 접근합니다.

인덱스는 0부터 시작합니다.

예제

# access item in tuple
print(my_tuple[0])  # print 1st element
print(my_tuple[2])  # print 3rd element

결과

1
3

불변성

Tuple은 불변성을 가지고 있기에 요소를 바꾸려고 하면 다음과 같이 에러가 발생됩니다.

예제

# immutable
my_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

결과

TypeError                                 Traceback (most recent call last)
Cell In[3], line 2
      1 # immutable
----> 2 my_tuple[0] = 10

슬라이싱

슬라이싱을 사용하면 Tuple의 일부분을 쉽게 가져올 수 있습니다.

예제

# tuple slicing
print(my_tuple[1:4])  # slice from 2nd to 4th element

결과

(2, 3, 4)

중첩 (Nested)

Tuple의 중첩(Nested)은 Tuple 안에 다른 Tuple을 포함시키는 것을 말합니다.

List와 마찬가지로 이러한 구조는 다차원 배열을 모방하거나 복잡한 데이터 구조를 구성할 때 유용하게 사용됩니다.

예제

# create tuple of 3x3 matrix (nested tuple)
matrix = (
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9)
)

print('access item in nested tuple')
# access item in nested tuple
print(matrix[0][1])  # print 1st row, 2nd element (2)
print(matrix[2][0])  # print 3rd row, 1st element (7)

print('loop')
# loop through nested tuple
for row in matrix:
    print(row[0])

결과

access item in nested tuple
2
7
loop
1
4
7

그 외 유용한 Tuple 내장 함수들

튜플은 불변성 때문에 리스트만큼 많은 메소드를 제공하지 않지만, 몇 가지 유용한 메소드가 있습니다.

  • index(x):
    • Tuple에서 첫 번째로 나타나는 x의 인덱스를 반환합니다.
  • count(x):
    • Tuple에서 x가 나타나는 횟수를 반환합니다.

참고 문헌

Leave a Comment