Python의 루프는 인덱스 카운터를 조작하기보다는 iterable(컬렉션)을 직접 순회하도록 설계되어 — 깔끔하고 읽기 쉽습니다. 두 가지 루프 유형은 for와 while입니다.
for 루프 — 항목을 직접 순회
python
fruit [, , ]:
(fruit)
fruits = [, ]
i ((fruits)):
(fruits[i])
Python의 for는 요소 자체를 순회합니다 — 수동 인덱싱이 필요 없습니다. 이는 인덱스 기반 루프보다 깔끔하고 오류가 적습니다.
# range — 숫자 생성
for i in range(5): # 0,1,2,3,4
for i in range(2, 10, 2): # 2,4,6,8 (start, stop, step)
# enumerate — 인덱스와 항목이 모두 필요할 때
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# zip — 여러 시퀀스를 병렬로 순회
for name, age in zip(names, ages):
print(f"{name} is {age}")
# dict 순회
for key, value in user.items():
print(key, value)
enumerate(인덱스 + 항목)와 zip(병렬 순회)은 어색한 인덱스 조작을 대체합니다 — range(len(...)) 대신 이들을 사용하세요.
while condition:
do_work()
if done: break # 루프 종료
if skip: continue # 다음 반복으로 점프
for item in items:
if item == target:
break
else:
# 루프가 break 없이 완료된 경우에만 실행
print("not found")
루프의 else는 루프가 정상적으로 끝났을 때(break 없음) 실행됩니다 — 탐색 패턴에 유용합니다.
Python의 반복 모델 — 인덱스가 아니라 항목을 직접 순회하는 것 — 은 읽기 쉽고 관용적인 코드를 작성하는 데 핵심입니다.
올바른 도구(인덱스가 필요할 때는 enumerate, 병렬 순회는 zip, 횟수는 range, dict에는 .items())를 알면 다른 언어에서 온 초보자가 자주 작성하는 오류가 발생하기 쉬운 range(len(...)) 안티패턴을 피할 수 있습니다.
깔끔한 반복은 Pythonic 코드의 특징이며, 이 도우미들은 거의 모든 프로그램에서 사용됩니다.