1. 튜플(Tuple)


이번에는 '튜플(Tuple)'에 대해 알아보도록 하겠습니다. 이 튜플이라는 녀석은 우리가 앞서 배웠던 리스트와 매우 비슷합니다. 튜플과 리스트가 서로 다른점이 있다면, 대괄호 대신에 소괄호로 묶어서 표현하며 리스트는 요소의 변경이 가능한 반면에 튜플은 요소의 변경이 불가능하다는 특징을 지니고 있습니다. 즉, 읽을 수는 있지만 쓸 수는 없는 것과 같은 것입니다. 우선, 아래의 예제를 통해 튜플이 어떠한 형태를 가지고 있는지 확인해보도록 합시다.

>>> tuples = (1, 2, 3, 4, 5)
>>> type(tuples)
<class 'tuple'>

위 예제의 1행을 보시면, 요소들을 소괄호로 묶었으며 쉼표(,)로 각각의 요소를 구분한다는 것을 확인하실 수 있습니다. 1행의 형식뿐만 아니라, 둘러싸고 있는 소괄호를 제거하거나 리스트와 똑같이 튜플 안에 튜플을 요소로 가질 수 있습니다.

>>> tuples = ('a',)
>>> tuples = 'a', 'b', 'c'
>>> tuples = ('a', 'b', ('c', 'd'))

우선은 위 예제의 1행부터 보도록 합시다. 1행을 보니, 튜플의 마지막에 쉼표가 포함된 것을 보실 수 있는데 이것은 요소 한 개를 가지는 튜플을 만드려고 할 때 마지막에 쉼표를 넣어주어야 합니다. 만약 저 쉼표가 없다면, 소괄호로 둘러싸인 문자열로 취급을 하기 때문에 그렇습니다. 그리고 2행처럼 소괄호로 둘러싸지 않은 형식을 사용할 수 있으며, 3행처럼 튜플 내에서 튜플을 요소로 가질 수 있다는 것을 알 수 있습니다.


이러한 튜플을 통해서, 임시로 값을 저장하는 변수가 필요없이 아래의 예제와 같이 두 변수의 값을 서로 바꿀 수도 있습니다.

>>> a, b = 10, 20
>>> print(a, b)
10 20
>>> a, b = b, a
>>> print(a, b)
20 10

위 예제의 1행에서는 10이 a에, 20이 b에 들어간다는 2~3행을 통해 알 수 있으며 4행에서는 b의 값이 a에, a의 값이 b에 들어감으로써 서로 값이 바뀐다는 것을 5~6행을 통해 알 수 있습니다. 여기서, 왼쪽과 오른쪽에 있는 값의 갯수는 일치해야 한다는 것을 기억해두시기 바랍니다.


2. 튜플에서의 인덱싱과 슬라이싱


문자열과 리스트와 마찬가지로 튜플에서도 역시 인덱싱과 슬라이싱이라는 개념이 존재합니다. 우선은 인덱싱부터 간단하게 살펴보도록 하겠습니다. 

>>> tuples = (0, 1, 2, 3, 4, 5, 6)
>>> tuples[1]
1
>>> tuples[-2]
5

인덱싱도 많이 보니 익숙하죠? 2행에서는 위치 1에 있는 요소의 값을 가져오는 것이고, 4행에서는 위치에 음수가 쓰였으니 뒤에서부터 튜플 tuples를 읽게 됩니다. 뒤에서 두번째에 있는 요소는 바로 5이므로, 5행에서 5라는 결과값이 나온 것입니다. 바로 인덱싱에 이어, 튜플에서의 슬라이싱을 보도록 하겠습니다.

>>> tuples = (0, 1, 2, 3, 4, 5, 6)
>>> tuples[1:3]
(1, 2)
>>> tuples[3:]
(3, 4, 5, 6)

2행에서는 위치 1부터 시작하여, 끝 위치를 범위에서 제외하기 때문에 위치 3이 아닌 위치 2 까지의 요소를 모두 가져옵니다. 그리고 4행에서는 위치 3부터 시작하여, 끝 위치가 따로 명시가 되어있지 않기 때문에 튜플의 끝까지 요소를 모두 가져옵니다. 그렇기 때문에 '3, 4, 5, 6'이란 결과가 도출된 것입니다.


튜플에서의 인덱싱과 슬라이싱은 문자열과 리스트의 인덱싱과 슬라이싱과 똑같으므로 이 편에서는 자세히 설명하지는 않겠습니다. 혹여나, 인덱싱과 슬라이싱이 궁금하시면 문자열 편을 읽어보시고 오시면 될 것 같습니다.


3. 튜플에서의 연산자


튜플에서도 튜플을 연결하는 + 연산자와 반복하는 * 연산자가 존재합니다. 간단하게나마 이 두 연산자들을 살펴보도록 하겠습니다.

>>> tuples = ('a', 'b', 'c')
>>> tuples + ('d', 'e', 'f')
('a', 'b', 'c', 'd', 'e', 'f')
>>> tuples * 3
('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')

위 예제의 2행을 보시면 튜플 tuples와 ('d', 'e', 'f')를 서로 연결하여 ('a', 'b', 'c', 'd', 'e', 'f')가 되었음을 보실 수 있습니다. 이어서 4행을 보시면, 곱한 수만큼 튜플이 반복되는 것을 확인하실 수 있습니다. 간단하죠? 오늘은 여기까지 튜플에 대해 설명해드리도록 하겠습니다. 모두 수고하셨습니다.