AD JB Toolbox 01

Python 강좌 / for·range·enumerate·zip으로 반복하기

for는 반복 가능한 객체의 항목을 하나씩 처리합니다. 항목만 필요하면 직접 반복하고, 위치가 필요하면 enumerate, 여러 모음을 함께 읽으려면 zip을 선택합니다.

값 반복과 숫자 범위

Python의 for는 리스트 인덱스를 직접 증가시키는 문법에 한정되지 않습니다. 리스트나 문자열을 직접 반복할 수 있습니다. range(start, stop, step)은 stop을 포함하지 않으며 step이 음수이면 감소합니다. range는 모든 숫자를 미리 담은 리스트와 다릅니다.

관련 동작과 지원 조건은 for·range·enumerate·zip으로 반복하기 관련 공식 문서에서 확인할 수 있습니다.

for value in range(1, 4):
    print(value)

1, 2, 3이 차례로 출력됩니다. stop을 포함한다고 생각하면 반복 횟수를 하나 잘못 계산하기 쉽습니다.

전체 예제와 실행 결과

별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python for_loop.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.

for_loop.py 파일의 전체 내용입니다.

names = ["coffee", "lunch", "bus"]
amounts = [3500, 8000, 2500]
for number, (name, amount) in enumerate(zip(names, amounts, strict=True), start=1):
    print(number, name, amount)
print(list(range(5, 0, -2)))

예상 결과는 다음과 같습니다.

1 coffee 3500
2 lunch 8000
3 bus 2500
[5, 3, 1]

enumerate와 zip의 길이 조건

enumerate는 인덱스와 항목을 함께 제공하며 start=1은 표시 번호를 1부터 시작하게 합니다. 리스트의 실제 인덱스가 바뀌는 것은 아닙니다. 예제의 이중 언패킹은 번호와 이름·금액 쌍을 각각 받는 구조입니다.

기본 zip은 가장 짧은 입력이 끝나면 중단합니다. 길이가 같아야 하는 데이터라면 strict=True로 조용한 누락을 막을 수 있습니다. 이 옵션은 Python 3.10 이상에서 지원합니다. 이름과 금액을 따로 보관하면 길이가 어긋날 수 있으므로 기록이 복잡해지면 딕셔너리 목록처럼 한 항목에 묶는 방법도 검토합니다.

반복 중 변경과 결과 확인

원본 리스트를 돌면서 같은 리스트에서 삭제하면 다음 항목을 건너뛸 수 있습니다. 삭제할 항목을 따로 모으거나 필터링한 새 결과를 만들세요. 단순히 읽는 반복과 데이터 구조를 바꾸는 작업을 구분하면 추적하기 쉽습니다.

  1. amounts의 마지막 항목을 지워 strict=True가 오류를 발생시키는지 확인합니다.
  2. strict 옵션을 빼면 두 항목만 출력되는지 비교한 뒤 원래 데이터를 복구합니다.
  3. range(5, 0, -2)의 끝을 -1로 바꾸어 1 다음에 -1이 포함되는지 예상하고 실행합니다.
같은 카테고리의 다른 글
Python 강좌 / while·break·continue로 반복 제어하기

Python 강좌 / while·break·continue로 반복 제어하기

while의 종료 조건과 break·continue의 실행 범위를 설명합니다. 지출 입력 반복 예제로 빈 입력·음수·종료 문자를 처리하고 무한 반복 원인을 확인합니다.

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

변수 대입과 주석, input·print의 역할을 익힙니다. 입력 문자열을 금액으로 변환하고 f-string으로 출력하며 잘못된 입력의 원인을 확인합니다.

Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

venv로 프로젝트 환경을 분리하고 python -m pip로 패키지를 관리합니다. 활성화, 버전 기록, 재설치와 설치 환경 불일치 해결 기준을 익힙니다.

Python 강좌 / 딕셔너리로 키와 값 관리하기

Python 강좌 / 딕셔너리로 키와 값 관리하기

딕셔너리의 키·값 접근과 항목 갱신을 설명합니다. 분류별 지출 집계 예제로 get·items·정렬과 필수 키 누락 처리의 차이를 확인합니다.

Python 강좌 / 리스트·딕셔너리·집합 컴프리헨션 사용하기

Python 강좌 / 리스트·딕셔너리·집합 컴프리헨션 사용하기

리스트·딕셔너리·집합 컴프리헨션의 변환과 필터를 비교합니다. 중복 키, 빈 결과와 부수 효과를 확인하며 일반 반복문과의 선택 기준을 익힙니다.

Python 강좌 / for·range·enumerate·zip으로 반복하기

Python 강좌 / for·range·enumerate·zip으로 반복하기

for·range·enumerate·zip의 용도를 비교합니다. 번호와 지출 항목을 함께 출력하며 범위의 끝 제외, zip의 길이 불일치와 반복 중 변경 문제를 확인합니다.

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

macOS와 Ubuntu의 Python 설치 경로를 확인하고 개발용 가상환경을 만듭니다. 시스템 Python 보호, 배포판 버전 차이와 설치 오류의 확인 기준을 함께 다룹니다.

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

Python 강좌 / 조건과 반복 종합 실습: 점수 집계 프로그램

점수 집계 프로그램으로 조건문·반복문·리스트를 연결합니다. 유효 범위, 합격 경계, 빈 입력과 제외 개수를 확인하며 평균 계산을 검증합니다.

Python 강좌 / 위치·키워드 인수와 기본값 사용하기

Python 강좌 / 위치·키워드 인수와 기본값 사용하기

위치·키워드·키워드 전용 인수와 기본값을 익힙니다. 변경 가능한 기본값의 공유 문제와 None 검사로 호출별 상태를 분리하는 방법을 설명합니다.

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

Python 강좌 / 비교·논리 연산자와 참·거짓 판단하기

비교·논리 연산자와 참·거짓 변환을 설명합니다. and·or의 단락 평가, 0과 None의 차이, ==와 is의 용도를 예제로 확인합니다.