점프 투 파이썬 DAY5(튜플 자료형)

정지범·2026년 9월 14일

점프 투 파이썬

목록 보기
4/37

! 앞에서 리스트 자료형에 대해서 알아보았다.

  • 이번에는 리스트와 매우 비슷한 튜플(tuple) 자료형에 대해 알아보자.
  • 튜플은 리스트와 사용 방법이 비슷하지만 중요한 차이점이 있다.
  • 리스트는 값을 추가하거나 삭제하고 수정할 수 있지만, 튜플은 한 번 만들어지면 요솟값을 수정하거나 삭제할 수 없다.
  • 이러한 특징 때문에 프로그램에서 변경되면 안 되는 값을 저장할 때 튜플을 사용할 수 있다.

1. 튜플은 어떻게 만들까?

튜플은 리스트와 비슷하지만 리스트의 대괄호 [] 대신 소괄호 ()를 사용한다.

>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3
>>> t5 = ('a', 'b', ('ab', 'cd'))
  • t1은 아무런 요소가 없는 빈 튜플이다.
  • t2는 숫자 1 하나만 가지고 있는 튜플이다.
  • t3은 여러 개의 숫자를 가지고 있는 튜플이다.
  • t4처럼 소괄호 ()를 생략해도 튜플을 만들 수 있다.
  • t5처럼 튜플 내부에 또 다른 튜플을 넣을 수도 있다.

튜플을 만들 때 주의해야 할 중요한 특징이 있다.

1-1. 요소가 1개인 튜플

요소가 하나뿐인 튜플을 만들 때는 반드시 값 뒤에 쉼표(,)를 붙여야 한다.

>>> t1 = (1,)
  • 단순히 다음과 같이 작성하면 튜플이 아니다.
>>> t1 = (1)
>>> type(t1)
<class 'int'>
  • (1)은 단순히 숫자 1을 괄호로 감싼 것이기 때문에 정수형 int로 처리된다.

  • 반면 쉼표를 붙이면 튜플이 된다.
>>> t1 = (1,)
>>> type(t1)
<class 'tuple'>

즉, 요소가 하나인 튜플에서는 괄호보다 쉼표가 중요하다.


1-2. 튜플은 소괄호를 생략할 수 있다

튜플은 다음처럼 소괄호 ()를 생략해서 만들 수도 있다.

>>> t = 1, 2, 3
>>> t
(1, 2, 3)
  • 쉼표로 여러 값을 구분하면 파이썬은 이를 튜플로 처리한다.

1-3. 리스트와 튜플의 차이

리스트와 튜플의 가장 큰 차이는 값을 변경할 수 있는지 여부이다.

구분리스트튜플
표현[ ]( )
요소 수정가능불가능
요소 삭제가능불가능
요소 추가가능직접 추가 불가능
사용 목적값이 자주 변경되는 경우값이 변경되면 안 되는 경우
  • 프로그램 실행 중 계속 값이 변경되어야 한다면 리스트를 사용하는 것이 적합하다.
  • 한번 정한 값이 변경되지 않아야 한다면 튜플을 사용하는 것이 적합하다.

이처럼 값을 변경할 수 없는 특징을 불변(Immutable)이라고 한다.




2. 튜플의 요솟값을 삭제하거나 변경하면?

튜플은 한 번 만들어지면 내부의 요소를 직접 수정하거나 삭제할 수 없다.

  • 리스트에서는 다음과 같은 작업이 가능했다.
>>> a = [1, 2, 3]
>>> a[0] = 5
>>> a
[5, 2, 3]
  • 하지만 튜플에서는 같은 작업을 할 수 없다.

2-1. 튜플 요솟값 삭제하기

튜플의 요소를 del을 사용해서 삭제해 보자.

>>> t1 = (1, 2, 'a', 'b')
>>> del t1[0]
  • 실행하면 다음과 같이 오류가 발생한다.
TypeError: 'tuple' object doesn't support item deletion
  • 오류 메시지를 보면 튜플 객체는 요소 삭제를 지원하지 않는다는 것을 알 수 있다.

즉, 튜플 내부의 특정 요소를 del로 삭제할 수 없다.


2-2. 튜플 요솟값 변경하기

이번에는 튜플의 첫 번째 값을 변경해 보자.

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0] = 'c'
  • 이번에도 오류가 발생한다.
TypeError: 'tuple' object does not support item assignment
  • 리스트에서는 a[0] = 값과 같이 특정 요소를 변경할 수 있었다.
  • 하지만 튜플에서는 특정 위치에 새로운 값을 대입할 수 없다.

튜플은 생성된 이후 요소 자체를 직접 수정하거나 삭제할 수 없는 자료형이다.




3. 튜플 다루기

튜플은 값을 수정하거나 삭제할 수 없다는 점을 제외하면 리스트와 사용하는 방법이 상당히 비슷하다.

  • 튜플에서도 다음과 같은 기능을 사용할 수 있다.

    • 인덱싱
    • 슬라이싱
    • 튜플 더하기
    • 튜플 반복하기
    • 길이 구하기

3-1. 튜플 인덱싱하기

문자열이나 리스트와 마찬가지로 튜플에서도 인덱싱을 사용할 수 있다.

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
  • t1[0]은 튜플의 첫 번째 요소인 1을 의미한다.

>>> t1[3]
'b'
  • t1[3]은 네 번째 요소인 'b'를 의미한다.

리스트와 마찬가지로 파이썬의 인덱스 번호는 0부터 시작한다.

(1, 2, 'a', 'b')
 ↑  ↑   ↑    ↑
 0  1   2    3

  • 음수 인덱스도 사용할 수 있다.
>>> t1[-1]
'b'
  • -1은 튜플의 마지막 요소를 의미한다.

3-2. 튜플 슬라이싱하기

튜플에서도 문자열과 리스트처럼 슬라이싱을 사용할 수 있다.

>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')
  • t1[1:]은 인덱스 1부터 마지막 요소까지 가져온다.
  • 따라서 결과는 (2, 'a', 'b')가 된다.

  • 특정 구간만 가져오는 것도 가능하다.
>>> t1 = (1, 2, 3, 4, 5)
>>> t1[1:3]
(2, 3)
  • 인덱스 1부터 인덱스 3 직전까지 가져온다.
  • 따라서 2, 3이 포함된다.

슬라이싱의 기본 형태는 리스트와 동일하다.

튜플[시작:끝]
  • 시작 인덱스는 포함한다.
  • 끝 인덱스는 포함하지 않는다.

3-3. 튜플 더하기

튜플도 + 연산자를 사용해서 서로 연결할 수 있다.

>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t3 = t1 + t2
>>> t3
(1, 2, 'a', 'b', 3, 4)
  • t1과 t2가 합쳐져 새로운 튜플 t3가 생성되었다.

여기서 중요한 점이 있다.

t3 = t1 + t2
  • 기존의 t1과 t2 내부 값이 변경된 것이 아니다.
  • 두 튜플을 이용해서 새로운 튜플을 만든 것이다.
>>> t1
(1, 2, 'a', 'b')

>>> t2
(3, 4)
  • 기존 튜플의 값은 그대로 유지된다.

튜플은 수정할 수 없지만 기존 튜플을 이용해서 새로운 튜플을 만드는 것은 가능하다.


3-4. 튜플 반복하기(*)

튜플도 리스트나 문자열처럼 * 연산자를 이용해서 반복할 수 있다.

>>> t2 = (3, 4)
>>> t3 = t2 * 3
>>> t3
(3, 4, 3, 4, 3, 4)
  • (3, 4)가 3번 반복된 새로운 튜플이 생성된다.

이 역시 기존 튜플을 수정한 것이 아니라 새로운 튜플을 만든 것이다.

>>> t2
(3, 4)

3-5. 튜플 길이 구하기

튜플에 몇 개의 요소가 들어 있는지 확인하려면 len() 함수를 사용한다.

>>> t1 = (1, 2, 'a', 'b')
>>> len(t1)
4
  • 튜플 t1에는 총 4개의 요소가 있으므로 4를 반환한다.

  • len()은 다음과 같은 여러 자료형에서 사용할 수 있다.

    • 문자열
    • 리스트
    • 튜플
    • 딕셔너리 등



4. 튜플에는 왜 append, remove 같은 함수가 없을까?

리스트에서는 다음과 같은 여러 메서드를 사용할 수 있었다.

append()
insert()
remove()
pop()
sort()
reverse()
  • 하지만 튜플에서는 이러한 메서드 대부분을 사용할 수 없다.
  • 이유는 튜플이 요솟값을 변경할 수 없는 자료형이기 때문이다.

  • 예를 들어 리스트에서는 다음과 같이 요소를 추가할 수 있다.
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
  • 하지만 튜플에는 append() 메서드가 없다.
>>> t = (1, 2, 3)
>>> t.append(4)
AttributeError: 'tuple' object has no attribute 'append'

튜플은 기존 내용을 변경하는 방식이 아니라 필요한 경우 새로운 튜플을 만들어 사용한다.




5. 리스트와 튜플 비교하기

리스트와 튜플은 매우 비슷하기 때문에 처음 공부할 때 헷갈릴 수 있다.

list_a = [1, 2, 3]
tuple_a = (1, 2, 3)
  • 두 자료형 모두 여러 개의 값을 하나의 변수에 저장할 수 있다.
  • 둘 다 인덱싱과 슬라이싱을 사용할 수 있다.
  • 하지만 값 변경 여부에서 가장 큰 차이가 있다.
기능리스트튜플
인덱싱OO
슬라이싱OO
+ 연산OO
* 연산OO
len()OO
요소 수정OX
요소 삭제OX
요소 추가OX

간단하게 기억하면 다음과 같다.

리스트 = 변경 가능한 자료형
튜플 = 변경할 수 없는 자료형

6. 튜플에서 기억해야 할 핵심

튜플에서 가장 중요한 내용만 정리하면 다음과 같다.

  • 튜플은 ()를 사용한다.
t = (1, 2, 3)
  • 요소가 하나라면 반드시 쉼표 ,를 붙인다.
t = (1,)
  • 괄호는 생략할 수도 있다.
t = 1, 2, 3
  • 인덱싱이 가능하다.
t[0]
  • 슬라이싱이 가능하다.
t[1:]
  • +를 사용해서 새로운 튜플을 만들 수 있다.
t1 + t2
  • *를 사용해서 반복할 수 있다.
t * 3
  • len()으로 길이를 확인할 수 있다.
len(t)
  • 하지만 기존 요소의 수정과 삭제는 불가능하다.
t[0] = 10  # 오류
del t[0]   # 오류

! 리스트와 튜플의 가장 중요한 차이

  • 리스트 [] → 값을 변경할 수 있다.
  • 튜플 () → 값을 변경할 수 없다.

튜플을 처음 공부할 때는 우선 이 차이만 확실하게 기억해 두면 된다.

profile
성실하자:)

0개의 댓글