C

파이썬 리스트와 튜플 차이 — 언제 무엇을 쓸까?

2026-06-06 · Python · 파이썬 · 기초 · 자료구조

파이썬 리스트와 튜플 차이, 핵심부터

파이썬 리스트와 튜플의 가장 큰 차이는 가변성(mutability)입니다. 리스트는 만든 뒤에도 요소를 추가·삭제·변경할 수 있는 가변(mutable) 자료형이고, 튜플은 한 번 만들면 바꿀 수 없는 불변(immutable) 자료형입니다. 겉모습은 대괄호 []와 소괄호 () 차이지만, 이 가변성 하나가 속도와 용도를 모두 좌우합니다.

기본 문법

my_list = [1, 2, 3]    # 리스트: 대괄호
my_tuple = (1, 2, 3)   # 튜플: 소괄호

요소 1개짜리 튜플은 쉼표가 반드시 필요합니다. (1)은 그냥 정수 1이고, (1,)이라야 튜플입니다.

not_tuple = (1)    # int
yes_tuple = (1,)   # tuple
print(type(not_tuple), type(yes_tuple))  # <class 'int'> <class 'tuple'>

가변성 차이 확인

my_list[0] = 100        # 리스트는 변경 가능
my_list.append(4)
print(my_list)          # [100, 2, 3, 4]

# my_tuple[0] = 100     # TypeError 발생!
print(my_tuple[0])      # 읽기는 가능: 1

주요 차이 비교

구분리스트(list)튜플(tuple)
표기대괄호 []소괄호 ()
가변성변경 가능(mutable)변경 불가(immutable)
속도상대적으로 느림약간 더 빠름
메모리더 사용더 적게 사용
딕셔너리 키불가능가능(불변일 때)
주 용도변하는 데이터 모음고정된 묶음, 반환값

실전 예제: 언제 무엇을 쓸까

튜플 — 함수에서 여러 값 반환

def min_max(nums):
    return min(nums), max(nums)  # 튜플로 반환

lo, hi = min_max([4, 1, 9, 3])
print(lo, hi)  # 1 9

튜플 — 딕셔너리 키로 사용

좌표처럼 변하지 않는 묶음은 튜플로 만들어 딕셔너리 키로 쓸 수 있습니다. 리스트는 키가 될 수 없습니다.

grid = {(0, 0): "시작", (1, 2): "보물"}
print(grid[(1, 2)])  # 보물

리스트 — 데이터가 계속 바뀔 때

cart = []
cart.append("사과")
cart.append("바나나")
cart.remove("사과")
print(cart)  # ['바나나']

자주 하는 실수

  • 1개짜리 튜플에 쉼표 누락: (1)은 튜플이 아닙니다. (1,)처럼 쉼표를 꼭 붙이세요.
  • 튜플을 수정하려다 오류: 튜플 요소에 값을 대입하면 TypeError가 납니다. 바꿔야 한다면 처음부터 리스트를 쓰세요.
  • 튜플 안 가변 객체 오해: 튜플 안에 리스트가 들어 있으면 그 리스트 내부는 바꿀 수 있습니다. 튜플의 불변성은 "어떤 객체를 가리키는지"가 고정된다는 뜻입니다.
  • 괄호 생략 혼동: a = 1, 2, 3처럼 괄호 없이 쉼표만 써도 튜플이 됩니다. 의도치 않은 튜플 생성에 주의하세요.

자주 묻는 질문

Q. 튜플이 빠르다면 항상 튜플을 쓰는 게 좋나요?

아닙니다. 속도 차이는 대부분의 프로그램에서 체감되지 않습니다. 데이터가 변할 가능성이 있으면 리스트, 변하지 않아야 안전한 묶음이면 튜플을 선택하세요. 의미가 우선입니다.

Q. 튜플도 정렬할 수 있나요?

튜플 자체를 제자리에서 정렬할 수는 없지만, sorted(my_tuple)를 쓰면 정렬된 리스트를 새로 반환합니다. 다시 튜플이 필요하면 tuple(sorted(my_tuple))로 감싸세요.

Q. 리스트를 튜플로, 튜플을 리스트로 바꿀 수 있나요?

네. tuple([1, 2, 3])list((1, 2, 3))로 서로 변환할 수 있습니다. 가변 작업이 잠깐 필요하면 리스트로 바꿔 처리한 뒤 다시 튜플로 되돌리는 패턴을 씁니다.

파이썬 리스트와 튜플 차이 — 언제 무엇을 쓸까? | CodeMaster 블로그 | CodeMaster