리스트, 문자열, range…
반복 가능한 것들이 있다면 for문으로 한 줄씩 꺼내 쓸 수 있어요!
for문은 파이썬에서 가장 많이 쓰이는 반복문이에요 ✨
✅ for 문
1️⃣ 기본 구조
for 변수 in 반복가능한객체:
실행할 코드
- 반복가능한객체란? 리스트, 문자열, range(), 튜플, 딕셔너리 등
- 반복할 때마다 변수에 값이 하나씩 담겨서 코드가 실행
📌 예시
7명의 학생이 시험을 보았는데 시험 점수가 70점 이상이면 합격이고 그렇지 않으면 불합격이다.
합격인지 불합격인지 결과를 출력하라.
marks = [88, 44, 67, 76, 90, 50, 78] # 학생들의 시험 점수 리스트
number = 0 # 학생들에게 붙혀 줄 번호
for mark in marks: # 88, 44, 67, 76, 90, 50, 78을 순서대로 mark에 대입
number = number + 1
if mark >= 70:
print("%d번 학생은 합격입니다" % number)
else:
print("%d번 학생은 불합격입니다" % number)

💡해설
- marks = [...]
→ 학생들의 시험 점수를 리스트에 저장 - number = 0
→ 학생 번호를 나타내기 위해 사용된 변수
1번 학생, 2번 학생 이런 식으로 표시하려고 씁니다! - for mark in marks:
→ marks 리스트의 점수를 하나씩 꺼내서 mark 변수에 넣어요.
순서는 88 → 44 → 67 → 76 → 90 → 50 → 78 - number = number + 1
→ 학생 번호를 1씩 증가시켜요.
리스트 인덱스를 사용하지 않고 수동으로 번호를 붙이는 방식! - if mark >= 70:
→ 점수가 70점 이상이면 "합격"으로 처리해요. - print(... % number)
→ "%d번 학생은 합격입니다" 이런 식으로 학생 번호를 출력해줘요.
%d는 정수를 포맷팅할 때 사용하는 자리 표시자예요.
📌 핵심 포인트 요약
| 요소 | 의미 |
| for mark in marks | 점수 하나씩 반복 순회 |
| number += 1 | 학생 번호 1씩 증가 |
| if mark >= 70 | 70점 이상이면 합격 |
| %d | 정수를 문자열에 포맷팅 |
😎 확장 아이디어(꿀팁!)
- enumerate() 함수를 사용하면 번호 매기기를 더 간단하게 할 수도 있습니다!
- enumerate() 함수: 리스트 같은 반복 가능한 객체를 for문으로 돌릴 때 요소뿐만 아니라 “번호(인덱스)”도 같이 꺼내주는 함수
for i, mark in enumerate(marks, start=1):
if mark >= 70:
print(f"{i}번 학생은 합격입니다")
else:
print(f"{i}번 학생은 불합격입니다")
📌 기본 사용법
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
🔎 출력 결과
0 apple
1 banana
2 cherry
- 그냥 for fruit in fruits:로 돌리면 값만 꺼내요
- enumerate()를 쓰면 → 값 + 인덱스 번호(기본 0부터) 를 같이 가져와요!
📌 start=1로 시작 번호 바꾸기
for i, fruit in enumerate(fruits, start=1):
print(f"{i}번 과일: {fruit}")
🔎 출력 결과
1번 과일: apple
2번 과일: banana
3번 과일: cherry
- 특히 학생 번호, 줄 번호, 행 번호 등 붙일 때 유용해요!
2️⃣ continue와 함께 사용
marks = [88, 44, 67, 76, 90, 50, 78]
number = 0
for mark in marks:
number = number + 1
if mark < 60:
continue
print("%d번 학생 축하합니다! 합격입니다!" % number)
- for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아감

3️⃣ range() 함수와 함께 쓰기
i = range(10)
i
range(0,10) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- range(10): 0부터 10 미만의 숫자를 포함하는 range 객체
- range(a, b): a는 시작 숫자, b는 끝 숫자(반환 범위에 포함되지 않음 즉, 탈출 숫자)
📌 예시 ①
for와 range 함수를 사용하여 1부터 10까지 더하기
add = 0
for i in range(1,11):
add = add + i
print(add)
# 실행결과: 55
📌 예시 ②
for와 range를 이용한 구구단
for i in range(2, 10): # 1번 for문
for j in range(1, 10): # 2번 for문
print(i*j, end=" ")
print('')
- 1번 for문: 2부터 9까지의 숫자가 차례로 i에 대입
- 2번 for문: 1부터 9까지의 숫자가 차례로 j에 대입
- print(i*j) 수행

4️⃣ 리스트 컴프리헨션 (List Comprehension)
한 줄로 리스트를 만들 수 있는 강력한 문법!
가독성 좋고, 빠르고, 파이썬스러운 코드 스타일이에요.
🔎 기본 문법
[표현식 for 변수 in 반복가능한객체]
🔎 조건문 포함
[표현식 for 변수 in 반복가능한객체 if 조건]
🔎 else 조건도 추가 가능 (삼항 연산자)
[참일때 if 조건 else 거짓일때 for 변수 in 반복가능한객체]
🔎 중첩 for문
[표현식 for 변수1 in 반복1 for 변수2 in 반복2]
📌 예시 ①
# 기존 방식
result = []
for i in [1, 2, 3]:
result.append(i * 3)
# 리스트 컴프리헨션
result = [i * 3 for i in [1, 2, 3]]
# 조건까지 넣기
result = [i * 3 for i in [1, 2, 3, 4] if i % 2 == 0]
print(result) # 짝수만 * 3
✅ 동일한 결과지만 코드가 훨씬 짧고 직관적!
📌 예시 ② - 조건문 포함
짝수만 2배로 만들기
nums = [1, 2, 3, 4, 5, 6]
result = [x * 2 for x in nums if x % 2 == 0]
print(result)
# 실행결과: [4, 8, 12]
📌 예시 ③ - 조건문 + else 조건 추가 (삼항연산자)
짝수면 그대로, 홀수면 -1로 처리
nums = [1, 2, 3, 4]
result = [x if x % 2 == 0 else -1 for x in nums]
print(result)
# 실행결과: [-1, 2, -1, 4]
💡 if가 앞에 있으면 삼항 조건식, 뒤에 있으면 필터링
📌 예시 ④ - 중첩 for문
구구단 만들기
gugudan = [f"{i}x{j}={i*j}" for i in range(2, 4) for j in range(1, 4)]
print(gugudan)

✅ 정리 요약
| 패턴 | 예시 | 설명 |
| [x for x in iterable] | [i for i in range(5)] | 기본 |
| [x for x in iterable if 조건] | [i for i in range(5) if i % 2 == 0] | 조건 필터링 |
| [x if 조건 else y for x in iterable] | [i if i % 2 == 0 else -1 for i in range(5)] | 삼항 조건 |
| 중첩 for | [i*j for i in range(2) for j in range(3)] | 2중 반복 |
🧠 마무리 요약
문법 핵심 역할 if 조건 분기 while 조건이 참인 동안 반복 for 반복 가능한 객체 순회 break 반복 중단 continue 반복 건너뛰고 처음으로 range() 숫자 범위 생성 리스트 컴프리헨션 리스트 간결하게 만들기
📝 다음 글 예고
[파이썬] 함수: 코드 재사용의 마법 – def, return, 매개변수
'SK-Rookies > 파이썬' 카테고리의 다른 글
| [파이썬] 꼭 알아야 할 내장 함수들 – len, range, type, list 등 (0) | 2025.07.04 |
|---|---|
| [파이썬] 함수: 코드 재사용의 마법 – def, return, 매개변수 (0) | 2025.07.04 |
| [파이썬] while문 완전정복 (break, continue, 무한루프) (0) | 2025.07.03 |
| [파이썬] if문 제대로 배우기 (조건식, elif, 조건부 표현식까지!) (0) | 2025.07.03 |
| [파이썬] 리스트, 튜플, 딕셔너리, 집합 – 파이썬 컬렉션 완전 정복 (0) | 2025.06.27 |