데이터

제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -17

Leah (리아) 2025. 12. 14. 14:41
반응형

Chapter 02. 자료구조 문제풀이

파이썬 자료구조 정리: 튜플(Tuple) 완전 정복

이번 글에서는 파이썬 자료구조 중 튜플(tuple)을 중심으로 리스트와의 차이, 튜플의 기본 사용법, 정렬, 반복문 활용(for / while), 그리고 연습문제를 통해 실전 감각까지 정리해보았다.
리스트를 이미 알고 있다는 전제에서, “언제 튜플을 써야 하는지”에 초점을 맞춰 이해하려고 했다.


🔹 주요 개념 요약

1️⃣ 리스트(List)와 튜플(Tuple)의 차이

  • 리스트(list)는 변경 가능(mutable) 자료형
  • 튜플(tuple)은 변경 불가능(immutable) 자료형
  • 튜플은 한 번 생성되면 아이템 추가, 수정, 삭제가 불가능함
 
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)

 

이 차이 때문에 튜플은 값이 변하면 안 되는 데이터를 다룰 때 유리하다.


2️⃣ 튜플의 기본 특징

  • 소괄호 () 사용 (괄호 없이도 가능)
  • 인덱싱, 슬라이싱 가능
  • 길이 확인 가능 (len())
 
t = (10, 20, 30)

print(t[0])      # 10
print(t[1:])     # (20, 30)
print(len(t))    # 3

3️⃣ 튜플 결합과 정렬

  • 튜플은 수정은 불가능하지만 결합(concatenation) 은 가능
  • sorted()를 사용하면 리스트로 변환된 결과를 반환
t1 = (3, 1, 2)
t2 = (5, 4)

t3 = t1 + t2
print(t3)  # (3, 1, 2, 5, 4)

sorted_t = sorted(t3)
print(sorted_t)        # [1, 2, 3, 4, 5]
print(tuple(sorted_t)) # (1, 2, 3, 4, 5)

4️⃣ 튜플과 for문

튜플은 변경이 필요 없기 때문에 반복문과 궁합이 좋다.

 
scores = (90, 85, 78, 92)

total = 0
for s in scores:
    total += s

avg = total / len(scores)
print(avg)

읽기 전용 데이터 순회에 매우 적합


5️⃣ 튜플과 while문

인덱스를 이용한 접근도 가능하다.

 
scores = (90, 85, 78, 92)

i = 0
while i < len(scores):
    print(scores[i])
    i += 1

6️⃣ 튜플 활용 연습 문제 핵심 아이디어

📌 예제 1: 비밀번호 관리

  • 자주 바뀌지 않는 데이터 → 튜플 사용
 
passwords = ('naver123', 'google456', 'github789')

📌 예제 2: 학점 계산 문제

  • 연도별 학점은 고정된 구조 → 튜플의 튜플 사용
 
scores = ((3.7, 4.2), (2.9, 4.3), (4.1, 4.2))

 

튜플을 이용하면 구조가 명확해지고 실수로 값이 바뀌는 것을 방지할 수 있다.

 

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


 

💡 생각 정리

튜플을 배우면서 가장 크게 느낀 점은, “리스트를 못 쓰는 상황에서 어쩔 수 없이 쓰는 자료형”이 아니라는 것이다.
오히려 데이터의 성격이 고정적일수록 튜플이 더 안전한 선택이라는 점이 인상 깊었다.

특히 학점, 설정값, 기준 데이터처럼 프로그램 실행 중에 변하면 안 되는 값들을 튜플로 관리하면 코드의 의도도 명확해지고, 실수 가능성도 줄어든다는 점에서 리스트와는 완전히 다른 역할을 가진 자료구조라고 느꼈다.

또한 for문, while문과 함께 사용할 때 “읽기 전용 데이터 컨테이너”로서의 튜플은 가독성과 안정성 면에서 상당히 강점이 있다는 생각이 들었다.


🚀 적용점

 

  • 설정값, 기준값, 고정 데이터는 리스트보다 튜플을 우선 고려
  • 반복문에서 값 변경이 필요 없다면 튜플 사용
  • 구조화된 데이터(연도별 성적, 좌표, 범위 값 등)에 적극 활용
  • 정렬이나 수정이 필요할 경우 → 리스트로 변환 후 처리

 

반응형