반응형
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) 같은 형태는 조건문과 함께 사용할 때 매우 직관적이며 실용적이라는 점을 다시 느꼈다.
🚀 적용점
- 반복문에서 여러 값을 한 번에 가져와야 할 때는 리스트보다 튜플 언패킹 구조를 적극 활용하기
- 변경할 필요가 없는 데이터는 리스트 대신 튜플로 선언해 코드 안전성 높이기
- 정렬이나 필터링이 필요한 경우
→ 리스트 변환 → 처리 → 다시 튜플로 복원하는 패턴 사용 - 실제 프로젝트에서
- 회원 고정 정보, 지역 좌표, 카테고리 분류 등은 튜플로 저장
- 실시간 변경되는 데이터는 리스트로 관리
반응형
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -14 (0) | 2025.12.11 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -13 (0) | 2025.12.10 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -11 (0) | 2025.12.08 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -10 (0) | 2025.12.07 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -09 (0) | 2025.12.06 |