데이터

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

Leah (리아) 2025. 12. 9. 11:50
반응형

Chapter 01. 자료구조

 

리스트와 튜플, 그리고 튜플을 활용한 for문 완전 정리

 

1. 주요 개념 요약

🔸 리스트(List)와 튜플(Tuple)의 차이

리스트(list)

  • 대괄호 [] 사용
  • 변경 가능(mutable)
  • 아이템 추가/삭제/수정 가능
  • 대표 메서드: append, insert, remove, sort, reverse 등

튜플(tuple)

  • 소괄호 () 사용
  • 변경 불가(immutable)
  • 속성이 고정된 데이터나 안전하게 보관해야 할 데이터를 담기 좋음
  • 읽기 전용이기 때문에 속도도 더 빠름

🔸 튜플 아이템 정렬

튜플은 수정할 수 없기 때문에, 정렬하려면 리스트로 변환 후 다시 튜플로 묶어야 한다.


🔸 튜플과 for문

튜플은 for문과 함께 사용할 때 강력해짐.

✔ 구성

  • 단일 아이템 반복
  • (값1, 값2) 형태의 묶음을 반복
  • for a, b in tuple_list: 형태로 언패킹 가능

✔ 조건문과 함께 활용

  • 특정 기준값보다 낮은 점수 출력
  • continue 활용 가능
  • 여러 개의 튜플을 반복하며 최대/최소 값 찾기 가능

📍 2. 코드 예시 모음

🔹 리스트 vs 튜플

 
# 리스트
fruits_list = ['사과', '바나나', '포도']
fruits_list[1] = '딸기'   # 가능

# 튜플
fruits_tuple = ('사과', '바나나', '포도')
# fruits_tuple[1] = '딸기'  # 오류 발생 (변경 불가)

🔹 튜플 정렬하기

 
nums = (5, 3, 9, 1)

# 정렬하려면 리스트로 변환해야 함
sorted_nums = tuple(sorted(list(nums)))

print(sorted_nums)  # (1, 3, 5, 9)

🔹 튜플 + for문 — 특정 조건 찾기

scores = (
    ('국어', 58),
    ('영어', 77),
    ('수학', 89),
    ('과학', 99),
    ('국사', 50)
)

minScore = 60

for subject, score in scores:
    if score < minScore:
        print(f'과락 과목: {subject}, 점수: {score}')

 

📌 출력

 
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50

🔹 continue 활용

 
for subject, score in scores:
    if score >= minScore:
        continue
    print(f'과락 과목: {subject}, 점수: {score}')

🔹 실습 예시 – 사용자 입력받기

minScore = 60

kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
mat = int(input('수학 점수: '))
sci = int(input('과학 점수: '))
his = int(input('국사 점수: '))

scores = (
    ('국어', kor),
    ('영어', eng),
    ('수학', mat),
    ('과학', sci),
    ('국사', his)
)

for subject, score in scores:
    if score < minScore:
        print(f'과락 과목: {subject}, 점수: {score}')

🔹 최대/최소 튜플 찾기

 
classes = (
    ('1반', 28),
    ('2반', 31),
    ('3반', 25),
    ('4반', 33)
)

# 가장 작은 학급
min_class = min(classes, key=lambda x: x[1])
# 가장 큰 학급
max_class = max(classes, key=lambda x: x[1])

print('최소 학생 수 학급:', min_class)
print('최대 학생 수 학급:', max_class)

 

 

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


💡 생각 정리

리스트와 튜플은 비슷해 보이지만 실제 목적은 완전히 다르다는 점이 명확해졌다.
리스트는 데이터를 계속 바꾸고 확장해야 할 때 사용하고, 튜플은 변하면 안 되는 안정적인 정보를 담는 데 적합하다.

또한 단순히 고정된 데이터 보관뿐 아니라, 튜플을 for문과 함께 사용하면 데이터 구조를 깔끔하고 안전하게 관리할 수 있다.
특히 (subject, score) 같은 형태는 조건문과 함께 사용할 때 매우 직관적이며 실용적이라는 점을 다시 느꼈다.


🚀 적용점

 

  • 반복문에서 여러 값을 한 번에 가져와야 할 때는 리스트보다 튜플 언패킹 구조를 적극 활용하기
  • 변경할 필요가 없는 데이터는 리스트 대신 튜플로 선언해 코드 안전성 높이기
  • 정렬이나 필터링이 필요한 경우
    → 리스트 변환 → 처리 → 다시 튜플로 복원하는 패턴 사용
  • 실제 프로젝트에서
    • 회원 고정 정보, 지역 좌표, 카테고리 분류 등은 튜플로 저장
    • 실시간 변경되는 데이터는 리스트로 관리

 

반응형