Python제어 흐름

zip과 enumerate

여러 iterable을 병렬로 순회하거나 인덱스를 붙여야 할 때 `zip`과 `enumerate`의 기본 패턴을 정리합니다.

마지막 수정 2026년 3월 17일

기본 패턴

python
names = ["Mina", "Lee", "Kim"]
ages = [26, 31, 19]

for name, age in zip(names, ages):
    print(name, ":", age)

for index, name in enumerate(names, start=1):
    print(index, name)

설명

  • zip은 여러 iterable을 같은 길이만큼 묶어서 튜플을 반환합니다.
  • enumerate는 값 옆에 현재 인덱스를 붙여 줍니다.
  • 둘을 함께 쓰면 zip(enumerate(), ...)처럼 인덱스와 여러 열을 동시에 처리할 수도 있습니다.

짧은 예제

python
speeds = [10, 20, 30]

for (idx, name), speed in zip(enumerate(names), speeds):
    print(idx + 1, name, f"{speed}km/h")

빠른 정리

함수특징
zip(a, b)병렬 튜플 생성
enumerate(seq, start=1)인덱스 포함
zip(*iterables)언패킹으로 병렬 해제

주의할 점

zip은 가장 짧은 iterable 길이에 맞춰 끊기므로, 길이가 다른 경우 itertools.zip_longest를 고려하세요.