3.2 튜플 (Tuple) Last updated: 2023-10-24 18:39:11

집합 자료형은 여러개의 데이터를 한 번에 저장하고 관리하는 데이터형으로 각 요소는 앞에서 배운 정수, 실수, 문자열 등이 될 수 있고, 클래스 객체나 다른 집합 데이터가 될 수도 있다. 파이썬은 집합 데이터를 다룰 수 있는 편리한 기능들을 제공하고 포함할 수 있는 데이터의 종류도 더 유연한 장점을 가지고 있다.

3.2 튜플(Tuple)

튜플은 리스트와 같이 연속형 데이터를 저장하는 데이터형이다. 대부분의 기능은 리스트와 동일하지만 읽기 전용이라는 특성이 차이가 있다. 이 장에서는 튜플이 리스트와 다른 내용을 기준으로 설명한다. 나머지 부분은 리스트를. 참조하시기 바란다.


3.2.1 튜플 생성

리스트를 생성하려면 대괄호(‘[]’)로 데이터를 감싸면 되는데, 튜플은 소괄호(‘( )’)를 이용하는 것이 다르다. 리스트를 생성하는 예시를 확인해보자.

[예제 3- 105] 튜플 생성하기

a = (10, 20, 30, 40, 50, 60, 60, 70)
a

[결과]

(10, 20, 30, 40, 50, 60, 60, 70)

튜플은 리스트와 동일한 특성을 갖기 때문에 정수형, 실수형, 문자열 등 대부분의 데이터형을 동일하게 지원한다. 리스트를 이용해 튜플을 생성하는 예제를 확인해보자.


[예제 3- 106] 리스트로 튜플 생성하기

a = [10, 20, 30, 40, 50, 60, 60, 70]
b = tuple(a)

print(type(a), a)
print(type(b), b)

[결과]

<class, 'list'> [10, 20, 30, 40, 50, 60, 60, 70]
<class, 'tuple'> (10, 20, 30, 40, 50, 60, 60, 70)


3.2.2 튜플 자료형 다루기

튜플의 인덱스는 리스트의 인덱스와 동일하다.


A. 튜플 덧셈 (+)

[예제 3- 107] 튜플 덧셈 연산하기

a = (10, 20, 30, 40, 50, 60, 70, 80)
b = ('a', 'b', 'c', 'd')

a + b

[결과]

(10, 20, 30, 40, 50, 60, 70, 80, 'a', 'b', 'c', 'd')

튜플 a와 튜플 b의 덧셈 연산을 하면 두 튜플이 합쳐진 튜플 결과를 반환한다.



B. 튜플에 항목 추가

튜플에 항목 한 개를 추가할 때는 주의해야 할 점이 있다. 앞에서 튜플은 소괄호(‘( )’)를 이용해 만든다고 하였다. 하지만 숫자형 변수가 하나인 경우에는 수식의 괄호인지 튜플 생성을 위한 괄호인지 알 수가 없다. 튜플은 소괄호 안에 쉼표(,)가 있는지가 중요하다. 숫자가 하나인 경우에도 숫자 뒤에 쉼표를 추가해 튜플 이라는 것을 알려야 한다.

형식

(value 1, value 2, …)

파라미터

• value 1 (object) : 튜플의 첫 번째 입력 값
• value 2 (object) : 튜플의 두 번째 입력 값

반환

(tuple) 생성된 튜플 객체

[예제 3- 108] 튜플에 항목 추가하기

a = (10, 20, 30, 40, 50, 60, 70, 80)
a + (90,)

[결과]

(10, 20, 30, 40, 50, 60, 70, 80, 90)

튜플에 정수 항목 추가하려면 투플 항목을 추가하려면 단일 항목으로 튜플을 만들어서 덧셈 연산을 하면 된다.


[예제 3- 109] 튜플에 리스트 항목 추가하기

a = (1,2,3,4,5)
b = ['a', 'b', 'c', 'd']

a + (b,)

[결과]

(1, 2, 3, 4, 5, ['a', 'b', 'c', 'd'])

튜플에 리스트를 항목으로 추가하려면 앞과 동일하게 리스트를 항목으로 하는 튜플을 만들어 덧셈 연산을 하면 된다.


[예제 3- 110] 튜플과 리스트 항목 덧셈 연산하기

a = (1,2,3,4,5)
b = tuple(['a', 'b', 'c', 'd'])

a + b

[결과]

(1, 2, 3, 4, 5, 'a', 'b', 'c', 'd')

튜플과 리스트를 더하여 튜플 객체를 만들려면 리스트를 튜플로 변환하고 덧셈 연산을 하면 된다.



C. 튜플 곱셈 (*)

튜플에 정수를 곱하면 정수만큼 튜플을 생성한 후 모두 더하여 준다.

[예제 3- 111] 튜플과 정수 곱셈 연산하기

a = (10, 20, 30, 40, 50)

a * 3

[결과]

(10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50)

튜플에 정수를 곱하면 튜플을 정수만큼 반복해 연결된 튜플을 생성한다.



D. 튜플 항목 값 수정 불가

튜플은 항목 값을 변경할 수 없는(immutable) 데이터형이다. 따라서 항목의 값을 변경하려고 하면 다음과 같은 오류가 발생된다.

[예제 3- 112] 튜플 값 수정하기

a = (10, 20, 3, 40, 50)

# [1] 3번째 항목 값인 3을 30으로 변경한다.
a[2] = 30

[결과]

TypeError: 'tuple' object does not support item assignment


E. 튜플 항목 값 삭제 불가

튜플은 변경 불가(immutable) 하기 때문에 목록 생성 후 특정 항목을 삭제할 수 없다. 항목을 삭제하거나 변경하려면 리스트 집합 자료형을 사용해야 한다.


F. 이중 배열

튜플 안에는 리스트나 튜플과 같은 집합 데이터가 포함될 수 있다. 따라서, 이렇게 리스트 항목으로 집합 데이터가 포함된 경우 이중 배열로 접근해야 한다.

형식

tuple_var[first index][second index]

파라미터

tuple_var은 튜플 객체의 변수이다.

• first index (int) : 첫 번째 차원의 index
• second index (int) : 두 번째 차원의 index

반환

(object) 2개 차원의 index에 해당하는 튜플의 값 혹은 객체를 반환한다.

[예제 3- 113] 튜플에 리스트 항목 추가하기

a = (1,2,3,4,5, ['a', 'b', 'c', 'd'])
print(a)

[결과]

(1, 2, 3, 4, 5, ['a', 'b', 'c', 'd'])

[예제 3- 114] 이중 튜플 항목값 얻어오기

a = (1,2,3,4,5, ['a', 'b', 'c', 'd'])

# index 5에 해당하는 리스트 b중에서 두 번째인 b 값을 가져온다.
print(a[5][1])

[결과]

'b'