본문 바로가기
카테고리 없음

[파이썬 심화] enumerate, zip 병렬처리, 리스트 언패킹, 중첩 루프

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 11.

enumerate로 인덱스와 값을 함께 가져오기

기본 for문을 사용할 때 리스트의 인덱스와 값을 동시에 다뤄야 할 때가 많습니다.
이럴 때 enumerate() 함수를 사용하면 훨씬 깔끔하게 코드를 작성할 수 있습니다.

기본 for문 방식

fruits = ["사과", "바나나", "포도"]

for i in range(len(fruits)):
    print(i, fruits[i])

enumerate 사용 방식

for i, fruit in enumerate(fruits):
    print(i, fruit)

해석:

      
  • enumerate()는 각 요소의 인덱스와 값을 튜플로 반환합니다.
  •   
  • 코드를 더 간결하고 가독성 높게 만들 수 있습니다.

시작 인덱스 조정하기

for i, fruit in enumerate(fruits, start=1):
    print(f"{i}번째 과일은 {fruit}")

enumerate()start=1을 주면 인덱스가 1부터 시작합니다.
리스트를 사람이 읽기 쉬운 순서로 출력할 때 유용합니다.

zip을 활용한 병렬 반복 처리

zip() 함수는 여러 리스트를 동시에 묶어 반복할 때 사용합니다.
값들을 한 쌍씩 매칭시켜주는 병렬 처리 반복에 아주 유용한 도구입니다.

두 리스트 병렬 순회

names = ["지민", "정국", "뷔"]
scores = [95, 88, 90]

for name, score in zip(names, scores):
    print(f"{name}의 점수는 {score}점입니다.")

해석:

      
  • zip(names, scores)는 ('지민', 95), ('정국', 88)... 형태로 묶어줍니다.
  •   
  • 각 튜플의 항목을 동시에 반복할 수 있어, 딕셔너리 생성, 표 출력 등에 자주 활용됩니다.

zip으로 딕셔너리 만들기

score_dict = dict(zip(names, scores))
print(score_dict)

zip()으로 묶은 데이터를 dict()로 감싸면 손쉽게 딕셔너리로 변환할 수 있습니다.
이 방식은 실무에서 JSON, 엑셀 데이터 등을 구조화할 때도 유용합니다.

세 개 이상 리스트도 가능

ages = [28, 27, 28]

for name, score, age in zip(names, scores, ages):
    print(f"{name}: 점수={score}, 나이={age}")

여러 개의 리스트를 한 줄에 동시에 다룰 수 있는 zip은 병렬 반복의 대표 도구입니다.

리스트 언패킹과 중첩 반복문

2차원 리스트 반복 처리

matrix = [[1, 2], [3, 4], [5, 6]]

for row in matrix:
    for item in row:
        print(item, end=" ")

해석:

      
  • 2중 for문을 사용해 2차원 배열을 순회합니다.
  •   
  • end=" "는 출력 시 줄바꿈 대신 공백을 사용합니다.

리스트 언패킹 활용

pairs = [(1, 'a'), (2, 'b'), (3, 'c')]

for number, letter in pairs:
    print(f"{number} → {letter}")

해석:
튜플이나 리스트 안에 여러 값을 가진 경우 한 줄로 변수 나눠받기가 가능합니다.
zip과 함께 자주 사용되며, 코드가 매우 직관적으로 바뀝니다.

중첩 루프 + 조건 필터링

for i in range(1, 4):
    for j in range(1, 4):
        if i != j:
            print(f"{i} vs {j}")

해석:

      
  • 모든 경우의 수를 반복하면서, 조건을 통해 특정 조합만 출력
  •   
  • 경기 일정, 조합 만들기, 테이블 비교 등에 활용됩니다

파이썬의 enumerate(), zip(), 언패킹, 중첩 루프는 단순한 반복문을 더 짧고 명확하게 만들어줍니다.
이러한 고급 반복 패턴을 익혀두면, 코드의 가독성과 생산성이 크게 향상됩니다.

반복문이 복잡해질수록, 이러한 내장 함수와 패턴을 적극적으로 활용해보세요.
여러분의 반복문은 더 이상 지저분하지 않고, 효율적이고 우아해질 것입니다!