3.2 튜플 (Tuple) Last updated: 2023-10-24 18:39:11
집합 자료형은 여러개의 데이터를 한 번에 저장하고 관리하는 데이터형으로 각 요소는 앞에서 배운 정수, 실수, 문자열 등이 될 수 있고, 클래스 객체나 다른 집합 데이터가 될 수도 있다. 파이썬은 집합 데이터를 다룰 수 있는 편리한 기능들을 제공하고 포함할 수 있는 데이터의 종류도 더 유연한 장점을 가지고 있다.
집합 자료형은 여러개의 데이터를 한 번에 저장하고 관리하는 데이터형으로 각 요소는 앞에서 배운 정수, 실수, 문자열 등이 될 수 있고, 클래스 객체나 다른 집합 데이터가 될 수도 있다. 파이썬은 집합 데이터를 다룰 수 있는 편리한 기능들을 제공하고 포함할 수 있는 데이터의 종류도 더 유연한 장점을 가지고 있다.
튜플은 리스트와 같이 연속형 데이터를 저장하는 데이터형이다. 대부분의 기능은 리스트와 동일하지만 읽기 전용이라는 특성이 차이가 있다. 이 장에서는 튜플이 리스트와 다른 내용을 기준으로 설명한다. 나머지 부분은 리스트를. 참조하시기 바란다.
리스트를 생성하려면 대괄호(‘[]’)로 데이터를 감싸면 되는데, 튜플은 소괄호(‘( )’)를 이용하는 것이 다르다. 리스트를 생성하는 예시를 확인해보자.
[예제 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- 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의 덧셈 연산을 하면 두 튜플이 합쳐진 튜플 결과를 반환한다.
튜플에 항목 한 개를 추가할 때는 주의해야 할 점이 있다. 앞에서 튜플은 소괄호(‘( )’)를 이용해 만든다고 하였다. 하지만 숫자형 변수가 하나인 경우에는 수식의 괄호인지 튜플 생성을 위한 괄호인지 알 수가 없다. 튜플은 소괄호 안에 쉼표(,)가 있는지가 중요하다. 숫자가 하나인 경우에도 숫자 뒤에 쉼표를 추가해 튜플 이라는 것을 알려야 한다.
형식 | (value 1, value 2, …) |
---|---|
파라미터 | • value 1 (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')
튜플과 리스트를 더하여 튜플 객체를 만들려면 리스트를 튜플로 변환하고 덧셈 연산을 하면 된다.
튜플에 정수를 곱하면 정수만큼 튜플을 생성한 후 모두 더하여 준다.
[예제 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)
튜플에 정수를 곱하면 튜플을 정수만큼 반복해 연결된 튜플을 생성한다.
튜플은 항목 값을 변경할 수 없는(immutable) 데이터형이다. 따라서 항목의 값을 변경하려고 하면 다음과 같은 오류가 발생된다.
[예제 3- 112] 튜플 값 수정하기
a = (10, 20, 3, 40, 50)
# [1] 3번째 항목 값인 3을 30으로 변경한다.
a[2] = 30
[결과]
TypeError: 'tuple' object does not support item assignment
튜플은 변경 불가(immutable) 하기 때문에 목록 생성 후 특정 항목을 삭제할 수 없다. 항목을 삭제하거나 변경하려면 리스트 집합 자료형을 사용해야 한다.
튜플 안에는 리스트나 튜플과 같은 집합 데이터가 포함될 수 있다. 따라서, 이렇게 리스트 항목으로 집합 데이터가 포함된 경우 이중 배열로 접근해야 한다.
형식 | tuple_var[first index][second index] |
---|---|
파라미터 | tuple_var은 튜플 객체의 변수이다. |
반환 | (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'